Android 使用ninja加速编译的方法

news/2025/1/15 23:00:52/

ninja的简介

随着Android版本的更迭,makefile体系逐渐增多,导致make单编模块的时间越来越长,每次都需要半个小时甚至更长时间,其原因为每次make都会重新加载所有mk文件,再生成ninja编译,此完整过程十分耗时,实际编译代码仅占其中的一小部分。

因此我们可以使用google提供的一种快速编译方式:ninja,使用ninja编译,基本上十几秒就能快速编完一个模块,但必须注意ninja编译不会重新加载mk文件,故只适用于修改已存在的代码文件的情况,如果涉及到文件的增减、目录的重构就必须用mm/make重新编译之后,才能使用ninja快速编译新的修改。

第一步:进行一次完整编译

source build/envsetup.sh
lunch xxxx-userdebug
./build.sh --dist
(或者make -j24)

第二步:使用ninja进行编译

source build/envsetup.sh
lunch xxxx-userdebug
prebuilts/build-tools/linux-x86/bin/ninja -f out/combined-xxxx.ninja <module_name> -j24其中module_name为模块名或镜像名:bootimage、dtboimage、framework、Settings等理论上所有的Makefile或者Android.mk中的module_name皆可使用ninja进行快速编译

举例如下:

prebuilts/build-tools/linux-x86/bin/ninja -f out/combined-sm6150.ninja bootimage -j24 prebuilts/build-tools/linux-x86/bin/ninja -f out/combined-sm6150.ninja dtboimage -j24prebuilts/build-tools/linux-x86/bin/ninja -f out/combined-sm6150.ninja sepolicy -j24 prebuilts/build-tools/linux-x86/bin/ninja -f out/combined-sm6150.ninja Settings -j24 prebuilts/build-tools/linux-x86/bin/ninja -f out/combined-sm6150.ninja framework -j24

其他常用命令

​
printconfig – 打印当前配置清单(lunch xxx)make bootimage -j16make module_name -j16m 编译从根目录开始的所有modulemm 进到module目录进行编译,目录下要有Android.mkmmm 加指定的路径参数,指定目录下要有Android.mkcroot – cd to the top of the treemake clean-<module_name> 例如:make clean-libutils、make clean-chargermake clean 删除out目录


http://www.ppmy.cn/news/1544349.html

相关文章

基于YOLO11/v10/v8/v5深度学习的维修工具检测识别系统设计与实现【python源码+Pyqt5界面+数据集+训练代码】

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

预览 PDF 文档

引言 在现代Web应用中&#xff0c;文件预览功能是非常常见的需求之一。特别是在企业级应用中&#xff0c;用户经常需要查看各种类型的文件&#xff0c;如 PDF、Word、Excel 等。本文将详细介绍如何在Vue项目中实现 PDF 文档的预览功能。 实现原理 后端API 后端需要提供一个…

el-select、el-autocomplete的选项内容过长显示完整内容

问题&#xff1a; el-select、el-autocomplete的选项内容过长需要看清完整内容 解决方案&#xff1a; 使用el-popover悬停显示完整内容 代码&#xff1a; <el-form-item label"备注" prop"remark"><el-autocomplete v-model"form.remar…

php实现sl651水文规约解析

SL651-2014-《水文监测数据通信规约》 1、要素解析说明 39 23 00 00 03 45 0x39查标识符得知为:39H Z 瞬时河道水位、潮位,我们定义为水位 0x23 按照要素标识符的规定,高5bit,低3bit,00100 011 对应的转换为10进制为4与3,也就是水位数据占用4字节,小…

Cocos使用精灵组件显示相机内容

Cocos使用精灵组件显示相机内容 1. 为什么使用精灵渲染 在游戏引擎中&#xff0c;游戏场景内除webview和video外所有的节点都是渲染在Canvas上&#xff0c;这导致了webview和video只能存在于所有节点的最上层或最下层&#xff0c;而这种层级关系会出现节点事件无法正常监听或者…

【1】Excel快速入门的核心概念

1. 工作表 基本工作表 图表工作表 工作表视图 2.表格(Table)&#xff0c;套用表格格式 ​ 名称&#xff08;表&#xff0c;列&#xff09; ​ 结构化引用[列名] ​ 设置表格样式 -可自定义&#xff08;如报表类&#xff09; ​ 数据验证 -交互 &#xff08;输入/输出交…

MATLAB/Simulink学习|在Simulink中调用C语言-04使用C Function 实现PI运算(使用模块自定义代码-仿真自定义代码)

在上一篇博客中&#xff0c;介绍了如何使用C Function 实现PI运算&#xff0c;但是在模块内编辑C代码&#xff0c;而不能直接调用已经写好了的C代码。 在Simulink中使用C Function调用自定义代码有两种方法&#xff0c;本篇博客介绍其中一种方法。 添加头文件和源文件 在实际…

P10424 [蓝桥杯 2024 省 B] 好数 题解

题目名字 P10424 [蓝桥杯 2024 省 B] 好数 题解 题目链接 题意 给一个整数n&#xff0c;从1到n这个区间范围内&#xff0c;每一个数位为偶数的数字为偶数且数位为奇数的数字为奇数&#xff0c;那么这个数就是好数 思路 首先确认所有的条件都必须要满足&#xff0c;奇对奇&…