当前位置: 首页 > news >正文

Android 使用ninja加速编译的方法

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.lryc.cn/news/476294.html

相关文章:

  • 《Java 实现选择排序:原理剖析与代码详解》
  • 数据结构之双链表——考研笔记
  • Django视图写法
  • 单臂路由实现不同VLAN之间设备通信
  • Linux·进程控制(system V)
  • 华为云Stack名词解释
  • YoloV9改进策略:上采样改进|CARAFE,轻量级上采样|即插即用|附改进方法+代码
  • 【C++】多态的语法与底层原理
  • RTP和RTCP的详细介绍及其C代码示例
  • 深入浅出了解AI教育发展与落地应用情况
  • Hive数据库操作语法
  • 容器架构-Docker的成长之路
  • 关于我、重生到500年前凭借C语言改变世界科技vlog.14——常见C语言算法
  • 简记Vue3(三)—— ref、props、生命周期、hooks
  • ARM cpu算力KDMIPS测试
  • 自杀一句话木马(访问后自动删除)
  • Nginx 反向代理(解决跨域)
  • gRPC-4种通信模式
  • 第五项修炼—系统思考
  • PYNQ 框架 - VDMA驱动 - 帧缓存
  • Java导出Word文档的几种方法
  • OceanBase V4.3.3,首个面向实时分析场景的GA版本发布
  • Maven随笔
  • 牛客题目解析
  • AG32的3个ADC可以并联使用吗
  • 什么是 OpenTelemetry?
  • [vulnhub]DC:7
  • 个性化十足的贵族服务器,惠普ML310e Gen8,服务器中的 “潘多拉魔盒”
  • 百度社招内推
  • 本地部署开源在线即时通讯软件Fiora打造个人私密聊天室