网站首页 > 技术文章 正文
熟悉android的开发的人都知道android系统编译的的时候,命令行敲下make的时候,会有很长的等待时间,
新版的android的编译主要是下面的流程
- Soong的自举(bootstrap)。这个步骤会编译Soong的核心组件。
- 收集Android.bp并生成out/soong/build.ninja文件。
- 收集Android.mk并生成out/build-<product>.ninja与out/combined-<product>.ninja文件。
- 执行ninja命令,进行编译。out/combined-*.ninja文件,就是真正的执行入口。
编译启动慢的原因有
- Ninja文件太大, 生成的ninja文件就有500M左右,load 到内存里面需要几个G
- 生成Ninja文件很慢,前面编译的流程中的2和3的过程需要遍历很多的Android.bp和Android.mk, 遍历的速度完全取决于硬盘的速度
- 生成Ninja文件的场景很多,lunch 不同的device会生成不同的ninja,mm的时候也会生成
- 重新生成Ninja的条件很多,修改Android.mk, Android.bp文件,添加环境变量,还有很多神奇的原因都会导致ninja文件被重新生成
改善的方法
直接跳过ninja的生成过程, 使用ninja进行编译
ln -s out/combined-aosp_arm64.ninja build.ninja
# 全编译
prebuilts/build-tools/darwin-x86/bin/ninja
# 编译单个的模块
prebuilts/build-tools/darwin-x86/bin/ninja module_name
问题
- 在修改Android.mk或者Android.bp的情况下,你需要重新生成ninja文件
- android 系统上并不是所有的makefile 都是用Android.bp,Android.mk来写的,有些是直接的makefile 写的,比如lk, 这些不适用上述方法。
猜你喜欢
- 2024-10-27 NDK开发——FFmpeg视频解码 ffmpeg ndk
- 2024-10-27 Camera基本代码架构 camera calibrator
- 2024-10-27 android 功耗分析方法和优化(1) 功耗app
- 2024-10-27 Cocos Creator v2.3.2 发布了!全新 Launcher 效率飞起!
- 2024-10-27 如何androd动态注册编写计算器 淘宝动态评分计算器在线
- 2024-10-27 高通平台OV8856 Camera的bring up总结
- 2024-10-27 高通平台移植GC2145 Camera驱动 高通驱动安装
- 2024-10-27 《坎公骑冠剑》光炮Android Mk.99技能与背景故事
- 2024-10-27 ubuntu移植libwebp到Android平台 ubuntu移植到arm
- 2024-10-27 步步为营,十分钟学会 Native JNI(附带彩蛋)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)