记Android MQTT第三库eclipse/paho.mqtt.android无法在Android 14上使用的升级过程

[复制链接]
查看867 | 回复3 | 2024-6-17 17:07:47 | 显示全部楼层 |阅读模式
本帖最后由 qq243559086 于 2024-6-17 17:16 编辑

    我们知道 eclipse/paho.mqtt.android 是一个非常重要的MQTT开源库,很多用到MQTT功能的Android App都使用了这个库。但是此库年久失修,由于Android升级到14后在后台任务方面做了调整,导致了此库出现适配问题无法继续使用,就算是 targetSdk 低于34打包也是一样无法在Android 14的设备上使用(简直坑爹啊~有木有)。如此严重的问题,时间有限的情况下,那就不得不考虑替换MQTT库了。(不要问我为什么不直接修改源码。狄仁杰:元芳你怎么看?元芳:大人,这哥们不想007

    Github 上搜 paho.mqtt.android ,点一下sort by: most stars一个一个的找,然后就看到了 hannesa2/paho.mqtt.android
mq1.png

    看其说明,这个库可以直接替换 eclipse/paho.mqtt.android虽然是Kotlin写的,但不用改代码。然后把它替换到dependenciesgradle sync一下,报错 gradle 的版本和 hannesa2 的版本不匹配。往下试低版本的 hannesa2 试到与当前 gradle 版本匹配上了。编译源码,又报错 MqttAndroidClient 的构造方法报错(难搞哦,不是不用改代码吗),由于不太熟悉Kotlin的语法,缺个 Ack.AUTO_ACK  参数楞是研究了很久(尴尬的头都大了)。
mq2.png

    打包运行到Android 14手机上测试,MQTT还是有问题。查看其说明文档,只有最新的几个版本才适配了Android 14然后又不得不调高hannesa2的版本,gradle 版本问题是绕不过了(白搞了这么久,坑爹啊)。往后翻了几页Github(最后挣扎一下),没找到合适的,无奈只得升级 gradle 库、gradle 插件,考虑到谷歌play政策,targetSdk也得升级(此处省略一万字。。。由于cordova框架的原因,天知道这几个玩儿之间的版本我匹配了多少个才匹配上,还得战战兢兢的看着其他库的匹配)。最后 gradle 升级到8.4才完美编译通过,再次打包运行到Android 14手机上测试,MQTT功能正常。(撒花~撒花~

    你以为这就完了吗,不知名的哪天在Maven找到了 mayzs/paho.mqtt.android  库,此库是对 eclipse/paho.mqtt.android 源码的修改,适配Android 14不用升级 gradle。(吐血~)

回复

使用道具 举报

lovzx | 2024-6-17 20:11:41 | 显示全部楼层

园长厉害啊,这都找得到

回复 支持 反对

使用道具 举报

bzhou830 | 2024-6-18 08:48:28 | 显示全部楼层
用过python flask版本的pahomqtt,很好用
选择去发光,而不是被照亮
回复 支持 反对

使用道具 举报

lazy | 2024-6-18 14:46:08 | 显示全部楼层
打卡
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则