【Android系统编译方法】-编译源码命令(make)(lunch)(adb)

本文介绍了Android编译系统的基础,包括执行sourcebuild/envsetup.sh加载编译环境,使用lunch选择编译选项,利用make进行多线程编译。文章还详细阐述了如何进行单独模块编译以及通过adb进行结果验证的过程。

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

思想原则

  • 研究Android编译系统之前,需要了解Linux系统的Make命令。Make命令在执行的时候,默认在当前目录找到一个Makefile文件,Make命令执行的是Makefile文件中的指令。Makefile文件中的指令可以是编译命令,也可以是其它命令。
  • 此处不选择Shell而选择Make是因为Make可以帮助我们处理好编译系统中典型的文件依赖需求关系。
  • 整个编译工程只有一个Makefile

编译命令

编译步骤:

 1. source build/envsetup.sh
 2. lunch
 3. make
 4. 单独编译(全编之后,代码修改后可使用单独编译,提高开发速度)
 5. 结果验证
1. source build/envsetup.sh

执行build/envsetup.sh,加载了编译时使用到的函数命令,同时添加了编译选项。

2. lunch

执行lunch命令后,打印出选择菜单,列出可用的编译选项,定义项目和编译过程中用到的全局变量。

lunch <product_name>-<build_variant>

例如:选择构建Nexus 5X的命令将是:

lunch aosp_bullhead-userdebug

在make命令后加上-j+数字来加快编译速度,-j后面的数字代表多线程个数,线程个数建议设置为编译服务器CPU核的个数乘以2,例如编译服务器CPU核的个数为2,多线程编译make命令为

3. make

执行make命令对整个android源码进行编译,执行当前目录下的Makefile文件

make -j4

不过线程越多,编译错误出现的概率越大。
编译的结果会生成在out目录下

4. 单独编译(全编之后,代码修改后可使用单独编译,提高开发速度)

单独编译可以有镜像或模块的单独编译
对镜像进行单独编译
例:

make bootloader

编译结果是:生成fdl2-sign.bin、u-boot-sign.bin、u-bootautopoweron-sign.bin。
对特定模块(module)进行单独编译
例:
在根目录下 mmm 模块路径

mmm packages/apps/Settings/
5. 结果验证
  • adb push 验证
    如验证qapp应用:
adb rootadb remount
adb push xxx/Qapp.apk product/priv-app/Settings
adb push xxx/oat/arm64(arm)/Qapp.vdex product /priv-app/Qapp/oat/arm64(arm)
adb push xxx/oat/arm64(arm)/Qapp.odex product /priv-app/Qapp/oat/arm64(arm)
adb reboot
  • 镜像下载验证

刷机工具使用编译生成的新镜像文件替换旧镜像文件,下载到手机验证(这里刷机如果不成功除了考虑手机连接问题外也要确定驱动是安装可运行的)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值