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



我正在构建一个应用程序,使其成为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文件本身来自AndroidSDK的m2repository文件夹,所以它应该是"官方"的,正确的,对吧?

有什么想法吗?

谢谢!

回答我自己-问题是AAPT/APT2构建系统被从*.aar文件中提取内容所破坏。

因此,如果您在*.aar中的libs/文件夹中有一些*.jar文件,则该文件不会被拾取,然后会导致运行时崩溃,并导致ClassDefNotFoundExceptions

所以,基本上答案已经在这里了:如何将.aar包含在带有android.mk 的AOSP中

最新更新