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

如何在AOSP的Android.mk中添加Eclipse Paho等外部Java依赖库

解决方案

方案一:预构建JAR包导入(最稳妥,兼容所有AOSP版本)

AOSP默认不支持直接拉取远程Maven依赖,优先使用本地预构建JAR的方式接入Paho库,步骤如下:

  1. 下载对应版本的两个Paho依赖包:
    • org.eclipse.paho.client.mqttv3:1.1.0.jar
    • org.eclipse.paho.android.service:1.1.1.jar
  2. 将两个JAR包放入你应用项目的libs目录(该目录与你的Android.mk文件处于同一层级)
  3. 修改你的Android.mk文件,添加两个预构建静态库声明,同时在主应用模块中引入这两个依赖:
    首先在include $(BUILD_PACKAGE)之前,添加预构建库定义:
    # 导入Paho MQTT核心客户端库
    include $(CLEAR_VARS)
    LOCAL_MODULE := org.eclipse.paho.client.mqttv3
    LOCAL_SRC_FILES := libs/org.eclipse.paho.client.mqttv3-1.1.0.jar
    include $(PREBUILT_STATIC_JAVA_LIBRARY)
    
    # 导入Paho Android服务库
    include $(CLEAR_VARS)
    LOCAL_MODULE := org.eclipse.paho.android.service
    LOCAL_SRC_FILES := libs/org.eclipse.paho.android.service-1.1.1.jar
    include $(PREBUILT_STATIC_JAVA_LIBRARY)
    
  4. 修复你现有Android.mk中的依赖覆盖问题,同时添加Paho依赖:
    你原有代码中先执行了LOCAL_STATIC_JAVA_LIBRARIES += cr android-common,之后又用:=直接赋值覆盖了该变量,会导致之前添加的依赖丢失,需要修改为:
    # 原有依赖保留,改用+=追加,不要用:=覆盖
    LOCAL_STATIC_JAVA_LIBRARIES += \
        android-support-test \
        mockito-target-inline-minus-junit4 \
        org.eclipse.paho.client.mqttv3 \
        org.eclipse.paho.android.service
    

修改完成后重新编译即可解决包找不到的报错。

方案二:Maven预构建库导入(仅支持带Maven仓库预配置的AOSP版本)

如果你使用的是Android 10及以上的较新AOSP版本,可使用Soong构建系统的maven_import规则,直接引用AOSP预内置的Maven仓库依赖,无需手动下载JAR包:

  1. 废弃原有的Android.mk,改用Android.bp配置,添加如下依赖声明:
    maven_import {
        name: "org.eclipse.paho.client.mqttv3",
        jars: ["org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.1.0"],
    }
    
    maven_import {
        name: "org.eclipse.paho.android.service",
        jars: ["org.eclipse.paho:org.eclipse.paho.android.service:1.1.1"],
    }
    
  2. 在你的应用的android_app模块的static_libs字段中添加上述两个库名即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 11:12:01