最終的解決方案是下載源碼去改。我用的是已經(jīng)修改好了的庫,如果包名要自己的,
要注意:
1.?compileSdk 34?和?targetSdk 34 改成33(Android12)或者34(Android13)。
2. 下載的 module 導入。
3. gradle 導入:
// MQTT
implementation 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.5'
implementation project(path: ':mqtt')
4. 配置清單換一下Service:
<service android:name="com.somsakelect.android.mqtt.MqttService" />?
5. 包名換一下:
import com.somsakelect.android.mqtt.MqttAndroidClient;
6. 其他不用動。
參考:
java - Android paho mqtt crashes Android 12 - Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE - Stack Overflow
自動翻譯的:
kotlin Android paho mqtt崩潰Android 12 -以S+(版本31及更高版本)為目標需要FLAG_IMMUTABLE或FLAG_MUTABLE之一 _NULL123
其中兩個解決方案試過,都不行。下載aar的那個,還有直接引用的,都報錯了。
最簡單兼容原始代碼的是下載源碼,修改。
比如這個已經(jīng)修改好了的庫:
GitHub - ElectApp/MyMQTT: MQTT Android Service (Modified from paho.mqtt.android)
或者下載 MQTT 的源碼,這樣改一下:文章來源:http://www.zghlxwxcb.cn/news/detail-797714.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-797714.html
到了這里,關(guān)于Android 12+ MQTT適配的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!