1

我正在使用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 文件夹,所以它应该是“官方”和正确的,对吧?

有任何想法吗?

谢谢你!

4

1 回答 1

0

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

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

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

于 2019-01-30T10:08:48.130 回答