Android / AOSP Android.mk的构建和支持-v4 AAR等

时间:2019-01-28 16:18:48

标签: android android-support-library android-source android.mk support-v4

我正在使用 AOSP 构建要成为系统映像一部分的应用,并尝试将 support-v4 等库包含为 AAR 适用于/的 libs / 文件夹中。否则,这可以正常工作,并且应用程序本身和整个系统映像都可以正常构建,但是尝试打开应用程序时会出现运行时崩溃。它们似乎都与在运行时未找到特定的support-v4等类有关,例如 ViewCompatMarshmallow 等。

现在,我检查了这些类是否实际上包含在AAR文件中,但是例如像这样:

ViewCompat $ MarshmallowViewCompatImpl.class

如果我检查例如support-v4,它们包含为

ViewCompatMarshmallow.java

因此不应将其作为

包含在AAR中

ViewCompatMarshmallow.class

我怀疑这可能是 Android.mk 问题,因为这是我需要在我的应用中使用的问题。不幸的是,Gradle不是一个选择。

我已经声明例如所需的support-v4 AAR库:

LOCAL_STATIC_JAVA_AAR_LIBRARIES += support-v4-26.0.0

LOCAL_AAPT_FLAGS += --auto-add-overlay
LOCAL_AAPT_FLAGS += --generate-dependencies
LOCAL_AAPT_FLAGS += --extra-packages android.support.v4
LOCAL_AAPT_FLAGS += --extra-packages android.support.v4.app
LOCAL_AAPT_FLAGS += --extra-packages android.support.v4.view
(etc. all the required packagenames) 

LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES += support-v4-26.0.0:libs/support-v4-26.0.0.aar

AAR文件本身是来自 Android SDK的m2repository文件夹,因此它应该是“正式的”且正确的文件,对吗?

有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

正在回答自己-问题是 AAPT / AAPT2 构建系统被打破了,而* .aar文件中提取内容的过程却如此。

因此,如果您有* .aar的 libs / 文件夹中的某些 *。jar 文件,该文件未拾取,然后导致 ClassDefNotFoundExceptions 导致运行时崩溃>。

因此,基本上答案已经在这里: How to include .aar in AOSP with android.mk