Android MQTT使用

使用Android MQTT用eclipse的paho库需要在build.gradle引入以下内容

    implementation 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.1.0'
    implementation 'org.eclipse.paho:org.eclipse.paho.android.service:1.1.1'

顺便提两句,service需要在Manifest中声明

        <!--MQTT Service 需要-->
        <service android:name="org.eclipse.paho.android.service.MqttService" />

两个项目的源码位置在
org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.1.0-----link
org.eclipse.paho:org.eclipse.paho.android.service:1.1.1----link

问题

现在大多使用AndroidX项目,而service包是用v4包写的,AndroidX项目自然找不到v4包。这里有两种方法解决。

  1. 将项目改为v4的,那你只能在新建项目时,勾选support包,以便不使用androidx包,否则两个包之间会有冲突。
  2. 下载service的源码,更改v4包为androidX包

记录下第2种解决方案

下载源码

org.eclipse.paho:org.eclipse.paho.android.service:1.1.1.zip address

添加到模块

下载好zip之后解压可以将org目录拷贝到自己项目中新建的模块中,下图中的mqtt_service_library。
请添加图片描述
将org目录拷入,可以看到java目录下只有org,我这里将自己创建时生成的com包删除了。
请添加图片描述

导入cilent库

这个模块也需要mqtt cilent库,在其build.gradle中导入

    implementation 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.1.0'

更改v4为androidx

然后的报错应该就是如下的v4了,改成下面的androidx即可

import android.support.v4.content.LocalBroadcastManager;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;

app模块导入

将修改完成的导入到自己的app模块中即可,build.gradle如下

    implementation 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.1.0'
    //MQTT服务,本应使用'org.eclipse.paho:org.eclipse.paho.android.service:1.1.1'
    //但其只能使用V4包,下载源码修改导入androidx包,源码位置你可以在这里找到版本1.1.1的源代码:
    //https://github.com/eclipse/paho.mqtt.android/tree/v1.1.1
    implementation project(path: ':mqtt_service_library')

如此就应该可以使用了。当然可以将这个模块导出jar包使用。我生成的包放在如下链接,有兴趣可以自取。
链接: mqtt_service.jar 提取码: gxmh
app目录下的build.gradle记得要修改为

    implementation 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.1.0'
    implementation files('libs/mqtt_service.jar')
    //MQTT服务,本应使用'org.eclipse.paho:org.eclipse.paho.android.service:1.1.1'
    //但其只能使用V4包,下载源码修改导入androidx包,源码位置你可以在这里找到版本1.1.1的源代码:
    //https://github.com/eclipse/paho.mqtt.android/tree/v1.1.1
//    implementation project(path: ':mqtt_service_library')

更多推荐