Android.mk中的aar支持

Juu*_*ude 9 android android-build android.mk aar

我现在正在做android自定义ROM开发.aosp的构建系统基于Android.mk,但我想包含一些aar库,是否有可能在Android.mk中包含aar库?

小智 10

您应该在Android.mk中添加以下块

LOCAL_STATIC_JAVA_AAR_LIBRARIES:= <aar alias>
.
.
.
include $(BUILD_PACKAGE)

include $(CLEAR_VARS)

LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := <aar alias>:libs/<lib file>.aar

include $(BUILD_MULTI_PREBUILT)
Run Code Online (Sandbox Code Playgroud)

另请注意,将库所需的minSdkVersion满足到清单文件中.

  • 对于其他人来到这里 - 请查看下面的@qhdwangnan答案,仅此答案不足以解决问题. (3认同)

qhd*_*nan 8

Kostiantyn Luzan的回答有一个问题.编译之后,aar中的资源将被添加到我的主程序包的R文件中,但不会添加到aar程序包的R文件中.例如,aar的包名是my.aar,主项目的包名是my.main.aar有一个名为"string_in_aar"的字符串.编译后,字符串id是my.main.R.string_in_aar而不是my.aar.R.string_in_aar.这使得apk崩溃,因为aar中的代码使用my.aar.R.string_in_aar.

解决方案是使用:LOCAL_AAPT_FLAGS + = --extra-packages {aar package name}.你会得到两个R文件.他们有一些内容.一个包是主包,另一个是aar包.