在AOSP中添加jar包和aar包依赖
添加jar包
Android源码中添加jar的方式比较简单,参考telephony-common.jar的手法,关键两步
ifneq ($(TARGET_BUILD_PDK), true)
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_AIDL_INCLUDES := $(LOCAL_PATH)/src/java
LOCAL_SRC_FILES := $(call all-java-files-under, src/java) \
$(call all-Iaidl-files-under, src/java) \
$(call all-logtags-files-under, src/java) \
$(call all-proto-files-under, proto)
LOCAL_JAVA_LIBRARIES := voip-common ims-common services bouncycastle
LOCAL_STATIC_JAVA_LIBRARIES := android.hardware.radio-V1.1-java-static \
android.hardware.radio.deprecated-V1.0-java-static
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := telephony-common
LOCAL_PROTOC_OPTIMIZE_TYPE := nano
LOCAL_PROTO_JAVA_OUTPUT_PARAMS := store_unknown_fields=true,enum_style=java
LOCAL_JARJAR_RULES := $(LOCAL_PATH)/jarjar-rules.txt
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk $(LOCAL_PATH)/jarjar-rules.txt
ifeq ($(EMMA_INSTRUMENT_FRAMEWORK),true)
LOCAL_EMMA_INSTRUMENT := true
endif
include $(BUILD_JAVA_LIBRARY)
主要是两点:
- LOCAL_MODULE := telephony-common(定义包名)
- include $(BUILD_JAVA_LIBRARY)(编译成jar包)
其他的参数请自行参考Android.mk的语法(注:后续Android版本使用了Android.bp,不过目录没变,在——frameworks\opt\telephony)。定义上上述公共库后,就可以在其他地方引用了。
引用方式:
LOCAL_STATIC_JAVA_LIBRARIES += telephony-common(你定义的包名,即LOCAL_MODULE的值)
添加aar包
添加aar包的方式也基本一致,参考 packages/apps/Settings/ 中 Android.mk 对 contextualcards.aar 的定义,如下:
include $(CLEAR_VARS)
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := contextualcards:libs/contextualcards.aar
include $(BUILD_MULTI_PREBUILT)
下图是AOSP中的源码:
这个是只有在Settings中才能引用的方式。我们可以添加到公用库,让所有模块都可以用。参考这种方式,在 prebuilts/tools/common/ 这个目录下新建一个文件夹,添加 Android.mk和aar包,如下:
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := my-tools:my-tools-release.aar
#(my-tools 就是后面可以引用的公用库,my-tools-release.aar 文件需要在 Android.mk 文件同级目录)
LOCAL_MODULE_TAGS := optional
include $(BUILD_MULTI_PREBUILT)
目录结构:
prebuilts/tools/common/my-tools/Android.mk
prebuilts/tools/common/my-tools/my-tools-release.aar
引用方式:
LOCAL_AAPT_FLAGS += --auto-add-overlay
# 这个选项避免资源冲突,参考博客:
# https://blog.youkuaiyun.com/shanshan_blog/article/details/53584155
LOCAL_STATIC_JAVA_AAR_LIBRARIES += my-tools
# 引用定义的aar包
LOCAL_AAPT_FLAGS += --extra-packages my-tools
# Android8.1后面的AOSP项目貌似不用加这个选项,不过如果有有问题,可以加上这个试试看
本文详细介绍了如何在AOSP项目中添加jar和aar包依赖。对于jar包,通过定义LOCAL_MODULE和引用BUILD_JAVA_LIBRARY来编译。对于aar包,参照Settings中的Android.mk文件,将aar包放在prebuilts/tools/common目录下创建的特定文件夹中,并编写Android.mk进行配置,以便其他模块引用。
768

被折叠的 条评论
为什么被折叠?



