引言
随着 Android 8.0(Oreo)的发布,通过 AOSP(Android 开源项目) 构建 Android 系统的方式发生了重大变化。过去,我们使用 Android.mk 文件来描述构建项目的细节;而现在,我们则需要使用更为现代化的 Android.bp 文件。
在 Android.mk 文件中,我们经常使用 local 变量来定义模块的属性和行为。本文将介绍如何将 Android.mk 文件中的 local 转换为 Android.bp 的方式,并提供一些注意事项和实用技巧。
步骤
以下是将 local 转换为 Android.bp 格式的步骤:
-
在 Android.bp 文件顶部,添加模块的注释和 package 属性。例如:
// 本模块用于构建示例应用 java_library { name: "example", package: "com.example", }这将创建一个名为 example 的 Java 库模块,并指定其包名为 com.example。
-
将
LOCAL_前缀的属性更改为对应的属性。例如,将LOCAL_MODULE更改为name,LOCAL_SRC_FILES更改为srcs,LOCAL_STATIC_LIBRARIES更改为static_libs,等等。java_library { name: "example", package: "com.example", srcs: [ "Example.java", ], static_libs: [ "libexample", ], } -
添加其他属性和行为。Android.bp 提供了更多的灵活性和功能。例如,我们可以添加
visibility、version、required_apy_versions等属性。还可以通过添加compile_multilib、arch和target等属性,指定特定的构建目标。java_library { name: "example", package: "com.example", srcs: [ "Example.java", ], static_libs: [ "libexample", ], visibility: [ // 可见范围为仅限当前模块及其依赖 "PUBLIC", ], version: "1.0", required_apy_versions: [ ">=8", "<=10", ], compile_multilib: "both", arch: { arm: { target: { android: { cflags: [ "-mthumb", ], }, }, }, }, target: { android: { compile_multilib: "both", }, }, }
注意事项和实用技巧
-
如果你需要构建 C/C++ 代码,也可以使用 Android.bp 文件来代替 Android.mk 文件。只需在文件开头添加
cflags、cppflags、ldflags等属性,并指定对应的编译器选项和库依赖。 -
当转换较大型的
Android.mk文件时,可以利用for循环和函数封装的方式,减少代码量。 -
Android.bp 文件中的注释使用
//行注释,不支持/* */块注释。 -
如果在转换后的 Android.bp 文件中遇到语法错误,可以在终端中使用
mm命令进行语法检查。mma YOUR_MODULE -n这将在编译模块之前进行语法检查,并输出错误提示信息。
结论
通过将 local 变量转换为 Android.bp 格式,我们可以更好地利用 Android 构建系统的新功能和灵活性。本文提供了转换步骤和一些实用技巧,希望能帮助您顺利开始使用 Android.bp 文件进行项目构建。

评论 (0)