安卓源码环境:Android.mk如何编译aar包?

在安卓源码top目录执行编译命令:(注意:下面的Android.mk要被include进去)

make test_aar out/target/common/obj/JAVA_LIBRARIES/test_aar_intermediates/javalib.aar

通用格式:make <module-name> out/target/common/obj/JAVA_LIBRARIES/<module-name>_intermediates/javalib.aar

把替换成LOCAL_MODULE的名字。

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := optional

LOCAL_MODULE := test_aar

LOCAL_STATIC_JAVA_LIBRARIES :=android-common \
    android-support-v4 \

# LOCAL_STATIC_JAVA_AAR_LIBRARIES:= abc

LOCAL_SRC_FILES := $(call all-java-files-under, java)

res_dirs := res \

LOCAL_RESOURCE_DIR := $(addprefix $(LOCAL_PATH)/, $(res_dirs)) \
    prebuilts/sdk/current/support/v7/cardview/res \
    prebuilts/sdk/current/support/v7/appcompat/res \
    prebuilts/sdk/current/support/design/res \

LOCAL_AAPT_FLAGS := \
    --auto-add-overlay \
    --extra-packages android.support.v7.cardview \
    --extra-packages android.support.v7.appcompat \
    --extra-packages android.support.design \
    --extra-packages com.abc.abc


LOCAL_JACK_ENABLED := disabled 
LOCAL_PROGUARD_ENABLED := disabled 

include $(BUILD_STATIC_JAVA_LIBRARY)

https://android.googlesource.com/platform/build/+/master/core/static_java_library.mk#133

# Rule to build AAR, archive including classes.jar, resource, etc.
built_aar := $(intermediates.COMMON)/javalib.aar
$(built_aar): PRIVATE_MODULE := $(LOCAL_MODULE)
$(built_aar): PRIVATE_ANDROID_MANIFEST := $(full_android_manifest)
$(built_aar): PRIVATE_CLASSES_JAR := $(aar_classes_jar)
$(built_aar): PRIVATE_RESOURCE_DIR := $(LOCAL_RESOURCE_DIR)
$(built_aar): PRIVATE_R_TXT := $(intermediates.COMMON)/R.txt
$(built_aar): $(JAR_ARGS)
$(built_aar) : $(aar_classes_jar) $(full_android_manifest) $(intermediates.COMMON)/R.txt
	@echo "target AAR:  $(PRIVATE_MODULE) ($@)"
	$(hide) rm -rf $(dir $@)aar && mkdir -p $(dir $@)aar/res
	$(hide) cp $(PRIVATE_ANDROID_MANIFEST) $(dir $@)aar/AndroidManifest.xml
	$(hide) cp $(PRIVATE_CLASSES_JAR) $(dir $@)aar/classes.jar
	# Note: Use "cp -n" to honor the resource overlay rules, if multiple res dirs exist.
	$(hide) $(foreach res,$(PRIVATE_RESOURCE_DIR),cp -Rfn $(res)/* $(dir $@)aar/res;)
	$(hide) cp $(PRIVATE_R_TXT) $(dir $@)aar/R.txt
	$(hide) $(JAR) -cMf $@ \
	  $(call jar-args-sorted-files-in-directory,$(dir $@)aar)

参考链接

how to create AAR archive file from Android.mk - Stack Overflow: https://stackoverflow.com/questions/42070123/how-to-create-aar-archive-file-from-android-mk

Build AAR package as part of AOSP build: https://groups.google.com/g/android-building/c/htNXz9Lkq7E?pli=1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值