Android源码一般会需要从git上同步下来。有以下几步:
1.预安装库
sudo apt-get install XXX
这一步需要的库,厂商一般都会提供出来。
如果有些库不能安装,尝试sudo apt-get update 再sudo apt-get upgrade,再进行预安装库。
2.预安装JDK
sudo apt-get install openjdk-X-jre
sudo apt-get install openjdk-X-jdk
配置JDK环境变量。
3.repo上获得源码
git clone git@255.255.255.255:android/repo
./repo/repo init –u git@255.255.255.255:android/manifest
.repo/repo/repo sync
执行完之后,就可以获得源码
比较重要的一些包的如下:
包 | 用法 |
---|---|
art | app art模式 |
bootable | 保存Bootloader,recovery |
build | 保存编译系统编译规则 |
dalvik | app dalvik虚拟机 |
developers | 开发者参考文档 |
development | 参考文档实例 |
device | 厂商的产品定义文件夹 |
external | 第三方开源 |
framework | Framework层 |
hardware | HAL中间层 |
kernel | 内核驱动 |
libcore | 核心库 |
out | 生成文件夹 |
packages | 应用程序包 |
prebuilts | 不同架构下预编译资源 |
sdk | SDK及模拟器 |
system | 底层文件 |
u-boot | 引导系统(微型系统) |
vendor | 各厂商定制特性 |
4.编译过程
1.引入环境变量
source build/envsetup.sh
2.指定需要编译的版本
lunch
之后会选择需要版本。
3.编译
make -j8
j后面的系数是处理器的倍数,可以提升编译效率。
在./out文件夹下看得到输出结果。可以找到五个img。system,boot,cache,userdata,recovery。
具体编译过程原理就不多赘述。
最后可以用 mount -t ext4 -o loop system.img ~/mount_dir 挂载镜像,看到镜像里的内容。
参数 -t 文件类型 -o 模式 system.img 镜像地址 ~/mount_dir 挂载地址
下图是system.img结构