如何从Android.mk创建AAR存档文件
我正在尝试构建一个定制的Android系统,为此我想使用一个单独的库来包含一些定制视图。为此,我使用如何从Android.mk创建AAR存档文件,android,android-source,android-library,ndk-build,android.mk,Android,Android Source,Android Library,Ndk Build,Android.mk,我正在尝试构建一个定制的Android系统,为此我想使用一个单独的库来包含一些定制视图。为此,我使用 ... LOCAL_MODULE:= com.zzz.ui include $(BUILD_JAVA_LIBRARY) ... 但缺点是我不能使用任何资源,所有的ui定制和布局安排都必须通过编程来完成 现在我想更改它并创建一个Android库,生成一个*.aar,在其中我还可以添加资源,并直接从布局文件和一些绘图文件中放大视图。我怎样才能做到这一点呢?经过我的调查,我发现了类似的东西。 虽然
...
LOCAL_MODULE:= com.zzz.ui
include $(BUILD_JAVA_LIBRARY)
...
但缺点是我不能使用任何资源,所有的ui定制和布局安排都必须通过编程来完成
现在我想更改它并创建一个Android库,生成一个*.aar,在其中我还可以添加资源,并直接从布局文件和一些绘图文件中放大视图。我怎样才能做到这一点呢?经过我的调查,我发现了类似的东西。 虽然这个答案是零碎的,但是从这一点上我可以看出,我可以使用以下步骤从我想要的任何模块构建AAR:
09
(至少需要一个有效的资源名称定义)
LOCAL\u RESOURCE\u DIR:=$(LOCAL\u PATH)/res include
$(构建静态JAVA库)
make out/target/common/obj/JAVA\u LIBRARIES/\u mediates/javalib.aar
out/target/common/obj/JAVA\u LIBRARIES/\u intermediates/javalib.aar
中生成
注:
builded\u aar:=$(intermediates.COMMON)/javalib.aar
这将显示当调用AOSP代码树的topdir makefile时,适合构建自身aar的所有模块要从AOSP构建系统构建.aar,需要为库创建make文件 假设您要创建名为xyz.aar的库,其包名为com.xyz.xyz,并且您的库在内部使用名为abc.aar、包名为com.abc.abc的其他aar,则生成文件可能如下所示:-
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 file中,不要使用include$(BUILD\u STATIC\u AAR\u LIBRARY)使用include$(BUILD\u STATIC\u JAVA\u LIBRARY)并在变量LOCAL\u模块中设置AAR库名称
要编译make文件,请使用以下命令
>生成xyz out/target/common/obj/JAVA_库/xyz_中间产物/xyz.aar
您的xyz.aar将位于out/target/common/obj/JAVA_LIBRARIES/xyz_intermediates/xyz.aar的位置。事实证明,它非常简单。 只需运行以下命令:
make out/target/common/obj/JAVA_LIBRARIES/YourLibName_mediates/javalib.jar
此命令生成classes.jar、classes-full-debug.jar和构建AAR包所需的其他文件make out/target/common/obj/JAVA_LIBRARIES/YourLibName_mediates/javalib.aar
您好,我遇到一个错误:**没有规则使目标为'classes header.jar'。停。@TinyAngel检查第一个note@Shadow我不得不check@TinyAngel你的解决方案是什么?您能分享吗?@FarhanArRafi,在从Android.mk中删除AAPT标志后,成功生成了R.txt。谢谢