如何在AOSP的Android.mk中添加Eclipse Paho等外部Java依赖库
解决方案
方案一:预构建JAR包导入(最稳妥,兼容所有AOSP版本)
AOSP默认不支持直接拉取远程Maven依赖,优先使用本地预构建JAR的方式接入Paho库,步骤如下:
- 下载对应版本的两个Paho依赖包:
- org.eclipse.paho.client.mqttv3:1.1.0.jar
- org.eclipse.paho.android.service:1.1.1.jar
- 将两个JAR包放入你应用项目的
libs目录(该目录与你的Android.mk文件处于同一层级) - 修改你的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) - 修复你现有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包:
- 废弃原有的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"], } - 在你的应用的android_app模块的static_libs字段中添加上述两个库名即可。
内容的提问来源于stack exchange,提问作者mozcelikors
相关产品推荐
相关产品推荐

