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

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

我正在使用 AOSP 构建一个应用程序作为系统镜像的一部分,并尝试将 support-v4 等库作为 AARs/在应用程序的 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 文件夹,所以它应该是“官方”和正确的文件,对吧?

有什么想法吗?

谢谢!

最佳答案

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

因此,如果您有例如*.aar 中 libs/ 文件夹中的一些 *.jar 文件未被提取,然后导致运行时崩溃并出现 ClassDefNotFoundExceptions.

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

关于Android/AOSP Android.mk 构建和支持-v4 AAR 等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54406177/

相关文章:

android - 如何使用 ItemTouchHelper 及其 Callback 或实现自定义的?

java - 更改 AOSP 中 Android 标准按钮的功能

android - Android 中的 "Notification"和 "Attention"有什么区别?

java - 将数据从 Android 应用连接并插入到预先存在的 MS SQL 数据库

android - Facebook Audience Network 返回错误 "Ad was re-loaded too frequently"

android - 样式工具栏无法使用 AppCompat

android - 更新到 API 23 时 Xamarin 支持库 (CardView) 错误

java - java中不支持的类版本错误?

java - Android JSON 数据未解析为 ListView

android - 在我自己的应用程序中存储 Android 系统图标