转自:http://www.jianshu.com/p/ff97a4e0d651
ubuntu14.04编译Android4.4源码讲述了用于模拟器的AOSP编译过程,在完整编译了源码以后,会自动将编译结果目录加入到path中,此时运行 emulator
即可在模拟器中运行自己的编译结果。
但是要在真机上运行,还需要一些其他的工作。
- 真机运行需要厂商的驱动,厂商的驱动是不包含在AOSP中的,你需要根据你选择的Branch:
https://source.android.com/source/build-numbers.html
去驱动页面:
https://developers.google.com/android/nexus/drivers#shamulrx21o
下载合适的驱动。
比如,我编译的是Branch是android-5.1.0_r1,对应的Build是LMY47D,在驱动页面找到对应的驱动是:
Nexus 5 (GSM/LTE) binaries for Android 5.1.0 (LMY47D)
... //下面有几个驱动链接
-
将驱动文件下载后,解压到AOSP根目录,得到几个.sh文件,执行后,会在AOSP下创建vendor目录,里面包含了驱动。
执行make clobber
清除一下产生的无关文件。 -
再次
make -j4
,此次编译的结果就包含了驱动,编译完成后,执行make fastboot adb
单独编译fastboot和adb。 -
将nexus5 调至 fastboot模式
方法一: 能够adb链接的时候执行adb reboot bootloader
。
方法二: 关机状态下,同时按音量上下键。 -
在fastboot模式下,执行
fastboot oem unlock
解锁bootloader,如果已经解锁,启动界面的google图标下有一把打开的锁。 -
执行
which fastboot
找到fastboot的目录,我的在AOSP/out/host/linux-x86/bin
下 -
电脑先切换到su用户下,这一步很重要,否则后面会有no devices, no permissions等错误。
-
在su下,切换至
AOSP/out/host/linux-x86/bin
,运行./fastboot devices
,将看到有一台连接的设备。 -
执行
./fastboot -w flashall
,提示错误:error: neither -p product specified nor ANDROID_PRODUCT_OUT set
,原因是ANDROID_PRODUCT_OUT没有设置,找不到编译的.img文件,执行:export ANDROID_PRODUCT_OUT=/your/path/to/img
-
再次执行
./fastboot -w flashall
将开始刷机,刷完会自动重启,over!
错误总结:
1、执行fastboot devices出现错误:
no permissions (user in plugdev group; are your udev rules wrong?); see [http://developer.android.com/tools/device.html] fastboot
解决方法:
fastboot需要使用root权限执行,使用sudo执行fastboot
sudo fastboot devices
2、adb no permission