注意
:硬盘剩余空间至少要100G。编译过程分析参考:Android编译过程及脚本分析。
1. 源码下载
参考1:Android 镜像使用帮助
参考2:AOSP(Android) 镜像使用帮助
参考3:建立Android系统开发环境
参考4:编译Android源码
参考5:Android 系统源码—下载到编译
参考6:下载源代码
参考7:Android4.4源码编译总结
参考8:Ubuntu 16.04(18.04) 编译安卓4.4.4_r1系统源码
参考9:Ubantu18.04环境下编译android源码
参考10:编译最新Android源码及SDK
android源码主要目录介绍.png
2. 编译整个项目
编译整个项目.png可以使用 make 编译任何代码。GNU make 可以借助 -jN 参数处理并行任务,通常使用的任务数 N 介于编译时所用计算机上硬件线程数的 1-2 倍之间。例如,在一台双核 E5520 计算机(2 个 CPU,每个 CPU 4 个内核,每个内核 2 个线程)上,要实现最快的编译速度,可以使用介于
make -j16
到make -j32
之间的命令。make -j8 表示开八个线程编译(开启的线程数一般为内核的两倍,如果不知道电脑内核直接 make 就好了)。
说明:编译Android源码非常耗时(耗时不算停下来的时间大约6小时),并且编译时会有各种错误导致编译终止,但百度一下都能找到解决方法,修改后重新编译即可。这里我把我编译过程中出现的问题总结了一下:
可忽略的提示
:不会导致编译终止
报错1
:/bin/bash: xmllint: 未找到命令
解决:根据提示,需动手安装对应的工具xmllint(libxml2-utils),安装命令为
sudo apt-get install libxml2-utils
。安装xmllint.png
添加万能域名后重新安装xmllint.png使用ubuntu的apt-get的时候,经常会遇到install时失败的情况。既然提示域名解析失败,那么就想办法加一个万能的域名:
a. 编辑文件 sudo vim /etc/resolv.conf
b. 在最后加上 nameserver 8.8.8.8
c. 保存退出
编辑resolv.conf文件.png
报错2
:段错误,核心已转储
解决:重新编译,竟然编译成功了
编译成功.png
3. 编译指定模块
(1) 创建并编译指定模块
(2) 编译指定模块失败
分析:可能是工程没有make(编译)过,单独编译某个模块导致的。先把工程整个make一下。整个项目编译成功后,才可重新编译指定的test模块:
编译指定模块.png
(3) 总结:需掌握Android.mk 的基本语法
知识点1:修改编译生成的目标文件的安装目录
备注:修改Android.mk,使用连接符“\”将每个源文件添加到Android.mk中,保存后重新编译即可。test.c为
修改Android.mk文件.png
修改后重新编译该模块.png
知识点2:编译多个源码文件
备注:修改Android.mk,配置环境变量LOCAL_MODULE_PATH,保存后重新编译即可。
修改Android.mk文件.png
修改后重新编译该模块.png
拓展:使用tree命令查看目录结构
备注:需先使用ubuntu的apt命令安装tree工具。
拓展.png
网友评论