- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要在 aosp 构建树中使用 android.mk 构建一个应用程序。
我有一个自定义的 .arr 库,它位于以下文件夹 apps/libs/mylib.aar
任何人都可以告诉我如何在 android aosp 构建中包含 aar。
我已经尝试过这里描述的以下方法 Stackoverflow link for aosp build with .aar lib
Android.mk 看起来像
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_PACKAGE_NAME := sample
LOCAL_CERTIFICATE := platform
# SRC files
#=====================================================================
LOCAL_AIDL_INCLUDES := $(LOCAL_PATH)/aidl
LOCAL_SRC_FILES := $(call all-java-files-under, src) \
$(call all-Iaidl-files-under, aidl)
# RES files
#=====================================================================
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
LOCAL_RESOURCE_DIR +=prebuilts/sdk/current/extras/constraint-layout/res
LOCAL_RESOURCE_DIR +=frameworks/support/v7/appcompat/res
LOCAL_RESOURCE_DIR +=frameworks/support/design/res
LOCAL_RESOURCE_DIR +=frameworks/support-v4/res
LOCAL_MANIFEST_FILE :=AndroidManifest.xml
LOCAL_USE_AAPT2 := true
LOCAL_PROGUARD_ENABLED := disabled
# static .aar files
#=====================================================================
LOCAL_STATIC_JAVA_AAR_LIBRARIES:= mylib.aar
#Adding aapt packages
#=====================================================================
LOCAL_AAPT_FLAGS := --auto-add-overlay
LOCAL_AAPT_FLAGS += --extra-packages android.support.v7.appcompat
LOCAL_AAPT_FLAGS += --extra-packages android.support.v7.recyclerview
LOCAL_AAPT_FLAGS += --extra-packages android.support.annotations
LOCAL_AAPT_FLAGS += --extra-packages android.support.v4
LOCAL_AAPT_FLAGS += --extra-packages android.support.design
LOCAL_AAPT_FLAGS += --extra-packages com.sample.mylib
#Include Static libraries
#=====================================================================
LOCAL_STATIC_JAVA_LIBRARIES := android-support-v7-appcompat
LOCAL_STATIC_JAVA_LIBRARIES := android-support-v7-recyclerview
LOCAL_STATIC_JAVA_LIBRARIES += android-support-v4
LOCAL_STATIC_JAVA_LIBRARIES += android-support-v7-gridlayout
LOCAL_STATIC_JAVA_LIBRARIES += android-support-annotations
LOCAL_STATIC_JAVA_LIBRARIES += android-support-design
LOCAL_STATIC_JAVA_LIBRARIES += gson
LOCAL_STATIC_JAVA_LIBRARIES += zxing
LOCAL_STATIC_JAVA_LIBRARIES += picasso
#Set out path
#=====================================================================
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_APPS)
#For build the application package
#=====================================================================
include $(BUILD_PACKAGE)
include $(CLEAR_VARS)
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := mylib:libs/mylib.aar
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES += gson:libs/gson-2.8.1.jar
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES += zxing:libs/core-3.3.3.jar
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES += picasso:libs/picasso.jar
include $(BUILD_MULTI_PREBUILT)
include $(call all-makefiles-under,$(LOCAL_PATH))
最佳答案
我知道我为时已晚,但仍然值得分享这些信息。LOCAL_STATIC_JAVA_AAR_LIBRARIES
对 AAPT2 的支持在某些时候被打破了。
因此,即使您如上所述添加库,也不会链接来自 aar 的资源。
来自 AOSP git 历史:
Oct 30, 2014 Add support for prebuilt AARs.
Aars 被解压到 out/.../intermediates* 目录并链接到 aosp 模块。
Dec 5, 2015 Support to build with AAPT2
正如您在 core/android_manifest.mk:26 中看到的那样,不再需要链接未打包的 aars,因为 AAPT2 支持直接链接到数组中。
但不幸的是,它们没有被添加为 --extra-packages
正确。
该错误已在 android-p-preview-5 中修复.
如果您仍在为 android 8 或 8.1 开发,请手动添加这些更改或在您的树中挑选它们。非常适合我。
更新 2018-11-28
为 android 8.1 及更早版本修复它的确切步骤:
1) cherry-pick 修复 2015 年 12 月 5 日 支持从 aosp 使用 AAPT2 构建
2) 在 build/core/prebuilt_internal.mk:593 添加参数 --auto-add-overlay
$(my_res_package): PRIVATE_AAPT_FLAGS := --static-lib --no-static-lib-packages --auto-add-overlay
include $(CLEAR_VARS)
LOCAL_MODULE := my-library-module
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := my-library-module.aar
# Provide resources directory in order to compile them, enable AAPT2 for this module
LOCAL_RESOURCE_DIR := $(call intermediates-dir-for,JAVA_LIBRARIES,$(LOCAL_MODULE),,COMMON)/aar/res)
LOCAL_USE_AAPT2 := true
# if LOCAL_RENDERSCRIPT_TARGET_API >= 21, resources won't get compiled. Shouldn't affect anything else
LOCAL_RENDERSCRIPT_TARGET_API := 20
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
LOCAL_MODULE_SUFFIX := $(COMMON_JAVA_PACKAGE_SUFFIX)
LOCAL_BUILT_MODULE_STEM := javalib.jar
LOCAL_UNINSTALLABLE_MODULE := true
include $(BUILD_PREBUILT)
关于android - 如何使用 android.mk 在 AOSP 中包含 .aar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51058787/
我对Android.mk & Application.mk的使用有点模糊 我已尝试阅读 documentation that comes with NDK 中的 APPLICATION-MK.HTML
我需要在 Application.mk 文件中指定库的路径才能正确链接它。这个怎么做?有任何 GCC 命令吗? 最佳答案 您必须将 LOCAL_LDLIBS := -L/path/to/the/lib
在 The Little Schemer book ,在第 9 章中,在为任意长输入构建 length 函数时,建议执行以下操作(在 pages 170-171 上),即以下代码片段(来自 page
我使用 jni 创建了一个 Android 项目。现在我想使用预处理器宏来区分精简版和完整版。它应该看起来像这样: #ifdef LITE auto label = LabelTTF::cre
看起来有可能,但我的脚本产生了奇怪的结果: LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) include $(LOCAL_PATH)/libos/
我正在深入研究在我的项目中使用android tesseract api。 https://github.com/rmtheis/tess-two 我将 com_googlecode_leptonic
在 Android 应用程序中,我想将一个 android.mk 文件导入应用程序中的另一个 Android.mk 文件 为此,我在一个 Andorid.mk 文件中使用了该文件,该文件将被导入到同一
这是代码 -(id) initWithNibName:(NSString*) nibNameOrNil bundle:(NSBundle*)nibBundleOrNil { ... [se
我已经下载了 OpenCV for Android 版本 3.2 并将其 java 模块导入到我的项目中。我已将 native (c++) 代码复制到 openCVLibrary320/app/src
我从来没有用 Android 构建过 curl。 先决条件:我正在使用 Android Studio 2.1.2我正在使用 NDK ,非实验性方式我在 curlLib 目录的 jni 文件夹中有 cu
我有一个顶级 defines.mk 文件,它列出了某些目录和 C 库,根据项目的不同而包含。 KERNEL_LIB = -lkdev DRIVER_LIB = -ldriver -lutil -li
Android.mk简介: Android.mk文件用来告知NDK Build 系统关于Source的信息。 Android.mk将是GNU Makefile的一部分,且将被Build
我觉得 CMake 和 Android.mk 有很多共同点,有人可以向我解释一下有什么区别,为什么谷歌发明了一个新的构建系统而不使用 CMake? 最佳答案 Android 开发人员有更多的变化。现在
我正在努力获取一个模块以在 Android 上编译。它引用了一个已经存在的共享库——我只有 .so 和 .h 文件。 我当前的 Android.mk 如下所示: LOCAL_PATH:= $(call
嗨,我是 android 应用程序的新手,你能告诉我如何创建 jni 和 android.mk ....我知道 jni 的目的但是如何在我的项目中创建那个 jni 告诉我一步一步 最佳答案 嗨NDK
在Android.mk中有什么方法可以使用条件表达式吗?我需要它来做这样的事: IF arch = AREABI_V7 *use path for my arm_v7 static libs*
在我的新项目中,我需要基于一个c写的项目。而且我知道我可以使用 NDK 来完成它,但这里有一个问题:如何将标准的 Makefile 重写到 Android.mk 中?再者,在Android中,是否可以
我正在使用 Android NDK 构建我的 cocos2dx 项目,在 Android.mk 中,有一个 LOCAL_SRC_FILES 的定义,其中列出了每个 cpp 文件。每当我添加一个新的源文
我正在尝试使用 android ndk(在 Windows 上)构建一个项目,但我遇到了一些问题,特别是源文件(Android.mk 中的 LOCAL_SRC_FILES) 我正在尝试使用父文件夹的相
LOCAL_PATH := $(call my-dir) TOP_LOCAL_PATH := $(call my-dir)/../ #Add target arm version ifeq ($(TA
我是一名优秀的程序员,十分优秀!