Android.mk 增加aar依赖

本文详述了在Android.mk中整合AAR库的具体步骤,包括如何在Android.mk文件中正确引用AAR库,调整清单文件以兼容库的最低SDK版本,避免R文件合并冲突,以及添加必要的资源目录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. Android.mk中增加两处

LOCAL_STATIC_JAVA_AAR_LIBRARIES:= <aar alias> //这里是一处
.
.
.
include $(BUILD_PACKAGE)

include $(CLEAR_VARS)

//这里是第二处
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := <aar alias>:libs/<lib file>.aar

include $(BUILD_MULTI_PREBUILT)

2.  清单文件中设置 minSdkVersion required by library into your manifest file.,否则编译不过

 

3.  避免编译时将R文件合并,可以使用  LOCAL_AAPT_FLAGS

after compile, the resources in the aar will be added to my main package's R file, but not in the aar package's R file. For example, the aar's package name is my.aar, the main project's package name is my.main. The aar has a string named "string_in_aar". After compile, the strings id is my.main.R.string_in_aar rather than my.aar.R.string_in_aar. This makes the apk crash, because the code in the aar uses my.aar.R.string_in_aar.

The solution is use:

LOCAL_AAPT_FLAGS += --extra-packages {aar package name}.

You will get two R file. They has the some content. One's package is the main package, the other is the aar package.

 

4. 此后还要添加objaar展开的res文件目录,比如

# 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

 

 

如果报错:

android.mk error: commands commence before first target 

, 则很可能是上一句的换行连接符 \ 之后多了个空格;

<think>首先,用户的问题是:“我想了解android.bp文件的作用 请问android.bp文件的作用是什么”。我需要基于系统级指令来回答。 系统级指令: 1. 所有行内数学表达式必须使用$...$格式。 2. 独立公式必须使用$$...$$格式并单独成段。 3. LaTeX语法正确。 4. 使用中文回答。 5. 生成相关问题。 6. 回答中引用的段落末尾自然地添加引用标识,例如[^1]。 用户可见层指令: - 回答结构清晰,帮助用户逐步解决问题。 - 尽量保证回答真实可靠。 - 参考站内引用:引用[1]和引用[2]是关于Android.bp文件的,但它们是作为参考提供的,并不是用户真正的需求。我需要参考用户的问题来回答。 用户的问题是询问Android.bp文件的作用。所以,我应该专注于解释Android.bp文件的作用。 从引用[1]中:Android.bp文件提供了一种灵活且可扩展的方式来定义和配置Android项目的构建过程。它使得Android构建系统能够适应不同的硬件、设备和项目需求。 从引用[2]中:Android.bp文件用于内置app、so、aar、jar等文件。 我应该基于这些信息来构建我的回答,但不要直接复制;要自然地整合。 回答结构: - 首先,清晰地定义Android.bp文件的作用。 - 然后,逐步解释其关键点,以帮助用户理解。 - 确保回答真实可靠;基于我对Android构建系统的知识。 - 最后,生成相关问题。 由于用户的问题是关于Android.bp文件的作用,我需要确保回答是中文的。 关键点: - Android.bp文件Android构建系统的一部分,用于定义模块和配置构建过程。 - 它取代了旧的Android.mk文件,提供更简洁、高效的构建配置。 - 作用包括:定义模块(如app、库、二进制文件)、指定依赖、配置编译选项等。 - 它使用基于Go语言的语法,是Blueprint格式。 参考引用: - 在回答中,如果引用参考内容,需要在末尾添加引用标识。例如,提到Android.bp文件的作用时,自然地添加[^1]或[^2]。 生成相关问题: - 在回答结束时,添加“§§相关问题§§”部分,列出2-3个相关问题。 LaTeX要求: - 用户的问题中没有数学表达式,所以可能不需要使用LaTeX。但系统指令说所有行内数学表达式必须使用$...$格式。既然这里没有数学内容,我可以忽略这一点,或者如果有机会,可以添加一些示例,但最好保持相关。在Android构建上下文中,没有明显的数学表达式,所以我应该避免不必要的添加。 确保回答结构清晰: 1. 引言:解释Android.bp文件是什么。 2. 主要作用:详细说明其功能和好处。 3. 示例:如果有必要,但用户没有要求代码示例。 4. 结论:总结。 5. 相关问题。 最终回答格式: - 用中文。 - 结束时添加相关问题。</think>### Android.bp文件的作用 Android.bp文件Android构建系统中的核心配置文件,用于定义和模块化项目的构建过程。它取代了传统的Android.mk文件(基于Make语法),引入了更简洁、高效的声明式语法,基于Blueprint格式(类似于Go语言)。其核心作用包括: 1. **定义构建模块**:Android.bp文件允许开发者声明各种构建模块,如应用程序(app)、库(library)、二进制文件(binary)、共享对象(so)、归档文件aar或jar)等。例如,一个简单的app模块定义可以指定源代码路径、依赖项和输出目标。这使得构建系统能自动处理编译、链接和打包过程[^1]。 2. **配置构建参数**:文件支持灵活的配置选项,如编译器标志(CFLAGS)、目标设备架构(例如ARM或x86)、版本控制等。这有助于适应不同硬件平台、Android版本和项目需求,提升构建的可扩展性和可维护性[^1]。 3. **管理依赖关系**:Android.bp文件能清晰地声明模块间的依赖(如静态库或动态库),构建系统会根据这些依赖自动解析和构建顺序,减少手动管理错误。例如,一个app模块可能依赖多个外部库,系统会确保所有依赖项按正确顺序编译[^2]。 4. **优化构建性能**:相比Android.mkAndroid.bp文件语法更简洁,减少了冗余代码,并支持并行构建。这能显著加速大型项目的构建速度,尤其在持续集成(CI)环境中。 5. **支持模块化开发**:在Android系统开发中,Android.bp文件常用于内置(prebuilt)组件,如预编译的APK、SO库或JAR文件。开发者可以轻松集成第三方库或自定义模块,而无需修改底层构建逻辑[^2]。 总的来说,Android.bp文件的作用是提供一个标准化、高效的方式来描述Android项目的构建逻辑,确保构建过程的一致性和可重复性。它已成为Android开源项目(AOSP)和现代Android应用开发的标准工具,帮助开发者更专注于代码实现而非构建配置[^1][^2]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值