Android 编译系统

Android.bp是Android系统的编译配置文件,替代了Android.mk。Ninja提供了更快的并发编译处理,Android使用Soong解析Android.bp生成Ninja文件。Kati工具则用于将旧的mk文件转换为ninja格式。Android.bp具有更简洁的配置语法,不包含复杂的逻辑控制。
摘要由CSDN通过智能技术生成

1.Android.bp 文件

Android.bp 文件是 Android 系统的一种编译配置文件,是用来代替原来的 Android.mk
文件的。

在 Android7.0 以前,Android 都是使用 make 来组织各模块的编译,对应的编译
配置文件就是 Android.mk,在 Android7.0 开始,Google 引入了 ninja 和 kati 来编译。

引入Ninja的原因:

随着 Android 越来越庞大,module 越来越多,编译时间也越来越久,而使用 ninja 在编译的并发处理上较 make 有很大的提升

Ninja 的配置文件就是Android.bp,Android 系统使用 Blueprint 和 Soong 工具来解析 Android.bp 转换生成 ninja文件

为了兼容老的 mk 配置文件,Android 当初也开发了 Kati 工具来转换 mk 文件生成ninja,但随着技术的演进, mk 文件将逐步废弃

2.Ninja, kati, Soong, bp概念

(1)Ninja

ninja是一个编译框架,会根据相应的ninja格式的配置文件进行编译,但是ninja文件一般不会手动修改,而是通过将Android.bp文件转换成ninja格文件来编译。

(2)kati

kati是专为Android开发的一个基于Golang和C++的工具,主要功能是把Android中的Android.mk文件转换成Ninja文件

(3)Soong

Soong类似于之前的Makefile编译系统的核心,负责提供Android.bp语义解析,并将之转换成Ninja文件。Soong还会编译生成一个androidmk命令,用于将Android.mk文件转换为Android.bp文件,不过这个转换功能仅限于没有分支、循环等流程控制的Android.mk才有效
(4)Android.bp

Android.bp的出现就是为了替换Android.mk文件。bp跟mk文件不同,它是纯粹的配置,没有分支、循环等流程控制,不能做算数逻辑运算。如果需要控制逻辑,那么只能通过Go语言编写

3.语法解析

(1)编译不同类型的模块

 App 应用,Java 库, Java 静态库, Native 动态库,Native 静态库,Native 执行程序,头文件库

(2)文件路径

本地头文件路径,导出的头文件路径,资源文件路径

(3) 库依赖

 依赖的静态库,依赖的动态库,依赖的头文件库,依赖的 Java 库

(4)安装到不同分区中

安装到vendor,安装到product,安装到odm

(5)编译参数

C flags,Cpp flags,Java flags

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值