Android编译系统中的Android.bp
Android bp 编译系统
2023-09-14 09:11:26 时间
https://www.cnblogs.com/bluestorm/p/10895005.html
Android.bp,是用来替换Android.mk的配置文件。 它使用Blueprint框架来解析,最终转换成Ninja文件。
与Android.mk不同的是,Android.bp是纯粹的配置文件,不包含分支、循环等流程控制,也不能做算数、逻辑运算。 与此同时,Ninja文件也是如此。 这就产生了一些新的问题与需求——在Android项目上进行选择编译、解析配置、转换成Ninja等——Soong应运而生。 Soong其实就相当于Makefile编译系统的核心,即build/make/core/
下面的内容。 它负责提供Android.bp的含义定义与解析,并将之转换为Ninja文件。。
Blueprint和Soong都是由Golang写的项目。 从Android Nougat开始,prebuilts/go/
目录下新增了Golang所需的运行环境,在编译时使用。
Android.bp以及相关支持,从Android Nougat开始加入,从Android Oreo(8.0)开始默认开启。 如果需要在Android Nougat的版本使用,需要在执行编译时添加变量。
Android.mk转换Android.bp实例
下面,以一个AOSP上的简单模块,system/core/sdcard/Android.mk
,来做为案例。
-
LOCAL_PATH := $(call my-dir)
-
-
include $(CLEAR_VARS)
-
-
LOCAL_SRC_FILES := sdcard.cpp fuse.cpp
-
LOCAL_MODULE := sdcard
-
LOCAL_CFLAGS := -Wall -Wno-unused-parameter -Werror
-
LOCAL_SHARED_LIBRARIES := libbase libcutils libminijail libpackagelistparser
-
-
LOCAL_SANITIZE := integer
-
-
include $(BUILD_EXECUTABLE)
这是一个编译二进制可执行文件的小模块,内容非常简单。 通过执行androidmk Android.mk > Android.bp
,可以转换成Android.bp。
-
cc_binary {
-
srcs: [
-
"sdcard.cpp",
-
"fuse.cpp",
-
],
-
name: "sdcard",
-
cflags: [
-
"-Wall",
-
"-Wno-unused-parameter",
-
"-Werror",
-
],
-
shared_libs: [
-
"libbase",
-
"libcutils",
-
"libminijail",
-
"libpackagelistparser",
-
],
-
sanitize: {
-
misc_undefined: ["integer"],
-
},
-
}
可以看出,虽然行数变多,但其实含义更明确了
相关文章
- 聚焦 Android 11: 大功告成
- android onresume函数,Android界面跳转时候onDestroy和onResume的调用顺序
- android移动点餐系统内容和要求,基于Android云计算的移动点餐系统
- Android开发之activity跳转页面失败的问题
- android中适配器的作用,适配器模式 在Android中的简单理解「建议收藏」
- android activity singletask,Android Activity启动模式之singleTask实例详解
- android定时器取消,Android定时器崩溃取消
- android toast全屏,Android Toast实现全屏显示
- android toast 自定义时间,Android 自定义 Toast 显示时间「建议收藏」
- android调用相册并显示图片_Android获取相册列表
- Android游戏引擎_2d游戏引擎
- 【Java 虚拟机原理】Android 类加载机制 ( 双亲委派机制 | BootClassLoader | PathClassLoader | DexClassLoader )
- 【ijkplayer】编译 Android 版本的 ijkplayer ③ ( 执行 compile-ffmpeg.sh clean 命令 | 下载并配置 android-ndk-r10e )
- Android控制文字水平间距android:letterSpacing详解手机开发
- [android] ndk环境的搭建详解手机开发
- 深入理解Android Build系统详解手机开发
- Android 设置TextView透明度详解手机开发
- 掌上药店Android 4.0.7 去广告清爽版
- Android中截取当前屏幕图片的实例代码
- android实现程序自动升级到安装示例分享(下载android程序安装包)