要从 AOSP 构建系统构建 .aar,您需要为您的库创建 make 文件,
假设您要创建名为xyz.aar的库,其包名为com.xyz.xyz,并且在内部您的库正在使用其他名为aar且包名为com.abc.abc的 aar,则 make 文件可能如下所示:-
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := xyz
LOCAL_STATIC_JAVA_LIBRARIES :=android-common \
android-support-v4 \
android-support-design \
android-support-v7-appcompat \
android-support-design-res \
android-support-v7-cardview
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)
include $(CLEAR_VARS)
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := all_static_libs
include $(BUILD_MULTI_PREBUILT)
include $(call all-makefiles-under,$(LOCAL_PATH))
在上面的 make 文件中,而不是使用include $(BUILD_STATIC_AAR_LIBRARY)使用include $(BUILD_STATIC_JAVA_LIBRARY)并在变量 LOCAL_MODULE 中设置 aar 库名称
要编译 make 文件,请使用以下命令
> 制作 xyz 出/target/common/obj/JAVA_LIBRARIES/xyz_intermediates/xyz.aar
您的 xyz.aar 将位于 out/target/common/obj/JAVA_LIBRARIES/xyz_intermediates/xyz.aar