一、制作一个大小写敏感的磁盘分区
1.1.Mac OS磁盘工具
这里我使用一块移动硬盘,将移动硬盘的一个分区使用Mac OS的硬盘工具,抹掉数据,选择MacOS扩展(区分大小写,日志式),创建成大小写敏感的分区。
这里会遇到一个问题,抹掉分区数据的时候,会报错:“Mac OSX 抹盘发生错误:Mediakit 报告设备上空间不足以执行此操作”
,这里的原因是磁盘没有大于200M的UEFI分区。
1.2.制作UEFI分区
我是在windows上操作的,
使用DiskGenius工具,在移动硬盘的第一分区前部,划分出200MB的空间。
在cmd命令行下运行下列命令,记得分步执行啊,小心出错,数据无价。
1 | diskpart |
详细的图文请参考:
Mac OSX 抹盘发生错误:Mediakit 报告设备上空间不足以执行此操作的解决办法
二、下载Android源码
2.1.repo sync 出错
1 | error: RPC failed; result=56, HTTP code = 200<br> |
repo sync时会出现如上错误,安装gnutls
和wget
后,
并参考stackoverflow解决。
2.2.如何选择驱动
详细的图文请参考:
Android源码的下载、编译与导入到Android Studio
三、编译
一定要下载并安装驱动,下载nexus5 6.0.1_r17版本为例,需要下载执行下图三个sh
1 | $chmod a+x ./*****.sh |
1 | $source build/envsetup.sh |
四、如何将编译好的Android img刷入模拟器
需要设置ANDROID_PRODUCT_OUT
变量到~/.bash_profile
文件中
1 | #Android 源码编译目录 |
使用命令启动emulator,加载指定的kernel内核和img
1 | kans-MacBook-Pro:android-6.0.1_r17-x86_64 Ivonhoe$ |
参考老罗的博客在Ubuntu上下载、编译和安装Android最新源代码
五、刷入Nexus6真机
Nexus6关机状态下,长按音量下+电源,进入recovery模式
然后在源码根目录下(Android根目录下)执行下面命令:
1 | fastboot -w flashall |
使用mmm framework/base
单独编译framework代码
adb push可能会提示 Read-only file system
failed to copy 'out/target/product/shamu/system/framework/framework.jar' to '/system/framework/framework.jar': Read-only file system
通过下列命令解决:
1 | adb root |