以前对于cm的源码编译都是基于固定机型的,有的时候需要使用模拟器,这边就记录一下使用cm的源码来如何编译android 模拟器,不过在做这件事情前你最好评估一下自己的机器配置。这里给出的推荐的配置是,i5以上的cpu,硬盘要固态硬盘,否则模拟器的启动和加载的速度几乎不可以忍受。
android源码编译完成以后生成的目录都是在源码目录下的out文件夹下
out/target 表示生成的是目标机器一般是手机上的各种程序,比如rom等
out/host 表示生成的是对于宿主机器上的各种工具,比如adb aapt dexdump等这些工具以及一些库文件
我们这里主要关心 out/target 下面生成的文件,在cm源码中经过不同的配置对于不同的机型 target下有相应的目录,比如 前面提到的maguro,crespo等,这里对于模拟器对应的目录是 generic 这个目录。
而对于android模拟器需要启动的最基本的几个文件如下:
1 kernel文件 内核文件,包括bootloader,开机动画等,android模拟器使用的goldfish内核,需要到githup下载基于cm 11.0的goldfish linux内核。
2 system.img 挂载 system目录的镜像
3 ramdisk.img 挂载磁盘的镜像
4 userdata.img 挂载用户数据的镜像
有了前面的介绍以后,我们开始进行基于cm 11.0源码的模拟器编译。
一 前置条件
1 下载一套完整的 cm 11.0源码,下载地址和过程见前面的博文
2 下载配套的goldfish 内核代码
这里下载的地址是
https://github.com/CyanogenMod/android_kernel_goldfish/tree/cm-11.0
下载完成以后,将代码解压缩在 kernel/goldfish 即可
二 编译
进入源码目录
1 . build/envsetup.sh
2 lunch
找到 cm_goldfish-eng
Which would you like? [aosp_arm-eng]
填入 cm_goldfish-eng 前面的数字,完成配置
3 make -j4
经过漫长的编译,在 out/target/product/generic 目录下生成了各种img文件,如下图
3 运行模拟器
emulator -kernel /DiskCM11/cm-11/out/target/product/generic/kernel -data /DiskCM11/cm-11/out/target/product/generic/userdata.img -system /DiskCM11/cm-11/out/target/product/generic/system.img -ramdisk /DiskCM11/cm-11/out/target/product/generic/ramdisk.img
这个命令就可以将模拟器给运行起来了,但是如果硬盘和电脑不给力的话,模拟器的速度实在不敢恭维。
基于 cm-11 源码编译模拟器