You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Kotlin Android应用连接到本地MQTT服务器?解决LocalBroadcastManager报错

MQTT连接报错:LocalBroadcastManager类找不到的解决办法

核心报错信息

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.myapplication, PID: 18864
    java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v4/content/LocalBroadcastManager;
        at org.eclipse.paho.android.service.MqttAndroidClient.registerReceiver(MqttAndroidClient.java:450)
        ...
     Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.v4.content.LocalBroadcastManager" on path: DexPathList[...]

同时伴随提示:Failed to connect to MQTT broker: cannot start service org.eclipse.paho.android.service.MqttService

问题原因

旧版Eclipse Paho Android服务依赖已废弃的Android Support库,而当前项目使用AndroidX架构,导致类路径不匹配;另外MqttService未在清单中注册也会引发服务启动失败。

解决步骤

  • 替换为AndroidX兼容的Paho依赖
    在模块级build.gradle(或build.gradle.kts)中更新依赖:

    implementation 'org.eclipse.paho:org.eclipse.paho.android.service:1.1.2'
    implementation 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.5'
    

    1.1.2及以上版本的Paho Android服务已适配AndroidX。

  • 确认AndroidX配置
    检查项目根目录的gradle.properties,确保开启AndroidX和自动依赖转换:

    android.useAndroidX=true
    android.enableJetifier=true
    
  • 注册MqttService并添加权限
    在AndroidManifest.xml中添加服务声明和必要权限:

    <!-- 网络权限 -->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    
    <!-- MQTT服务注册 -->
    <application ...>
        <service android:name="org.eclipse.paho.android.service.MqttService" />
    </application>
    
  • 清理重建项目
    执行Build > Clean Project后再执行Build > Rebuild Project,清除缓存并重新编译,确保依赖同步生效。

内容的提问来源于stack exchange,提问作者SAR7MAD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 02:55:25