1. 编译过程
参考官方,注意细节。
编译版本6.0.1_r50
。
1.1 下载第三方二进制文件
如果想要将编译好的img刷入物理设备,而不是虚拟机,一定要先下载好这些二进制文件,放在AOSP的根目录下。
二进制文件下载。下载完毕后并解压后,会有sh文件生成;运行sh文件,会在AOSP目录下生成vendor/
文件夹,必要的文件会放在里面。然后再执行编译。
1.2 编译
先清理一下旧的生成文件,个人认为很有必要。
|
|
设置java 环境变量,这里根据你的AOSP选择java版本,设置适当的java路径:
|
|
设置缓存区域,根据自己情况设置:
|
|
选择需要编译的目标:
|
|
开始编译,设置编译时用到的内核数目,这里写4:
|
|
稍等几个小时,呵呵,奇迹就会发生。生成的结果位于out/target/product/flo/
,flo
是我Nexus 7的型号,和launch时选择的版本相同。
2. 刷入真机
将编译好的img文件刷入设备比较容易,关键点在于前面步骤:下载了第三方包,选择了正确的编译版本。
重启设备进入fastboot模式,使用命令,这里刷入的Nexus7:
|
|
3. 启动emulator问题
想要在虚拟机里跑起来,需要在launch
步骤中选择正确的虚拟机版本,默认第一个。
相关工具emulator和kernel-qemu默认放置目录已经不在out/host/linux-xxx/bin
,已经迁移到prebuilts/android-emulator/linux-x86_64/emulator
和/prebuilts/qemu-kernel/x86_64/kernel-qemu
等相对应的位置。
常用的启动命令:
|
|
qemu: could not load initrd ‘ramdisk.img’
|
|
4. 在Android Studio中阅读源码
Android工程师很地道,考虑到了如何方便的将项目导入AndroidStudio。在编译完成,环境变量配置好的前提下,进行下面步骤。
4.1 生成idegen
编译idegen:
|
|
运行idegen:
|
|
然后,你就回在AOSP目录下发现`android.ipr`等文件。
4.2 导入
打开AndroidStudio,选择导入已有的项目,选择android.ipr。这里需要导入一段时间。
导入后会发现错误百出。首先打开Project Structure,选择`SDKs`添加一个SDK,我这里需要1.7:
清理ClassPath下的所有jar包,然后保存。
选择Project
,选择Project SDK为新建的SDK,Project language level也设置为对应的等级。
选择Modules
,在Dependencies
标签下,删除jar 依赖,最后如下:
然后在Modules
下,Sources
标签下,选择out/target/common/R
文件,选择右键Source。
这里一般情况下,会因为R文件过大,导致依然报错。这时需要修改AndroidStudio应用目录下Android_Studio/bin/idea.properties
文件,找到filesize,将参数修改大一些。
|
|
Android stack
这个图应该时时回顾一下。