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