红联Linux门户
Linux帮助

Ubuntu下将编译好的安卓源代码刷入Nexus5真机

发布时间:2016-11-05 09:39:36来源:linux网站作者:zero9988
第一步:下载源代码
见网站 https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/
需要注意 Android源码的版本与手机是有对应的,具体可见 https://source.android.com/source/build-numbers.html#source-code-tags-and-builds
如果直接从google的源去下载android代码,需要翻墙 挂vpn,所以建议使用这个清华的源。
 
第二步:下载对应设备Nexus5的硬件驱动并抽取相关数据
从谷歌的网站 https://developers.google.com/android/drivers#hammerheadlrx22c  上下载Nexus5的驱动 
下载的三个.sh文件,解压后放在源代码的根目录中,执行后 会生成vendor文件夹,驱动相关的文件都会被抽取到这个文件夹中。
接下来就可以开始编译了。
 
第三步:开始编译
在安卓源代码的根目录下输入:
$ source build/envsetup.sh
$ lunch
1. aosp_arm-eng  
2. aosp_arm64-eng  
3. aosp_mips-eng  
4. aosp_mips64-eng  
5. aosp_x86-eng  
6. aosp_x86_64-eng  
7. aosp_deb-userdebug  
8. aosp_flo-userdebug  
9. full_fugu-userdebug  
10. aosp_fugu-userdebug  
11. aosp_grouper-userdebug  
12. aosp_tilapia-userdebug  
13. mini_emulator_arm64-userdebug  
14. mini_emulator_arm-userdebug  
15. mini_emulator_mips-userdebug  
16. mini_emulator_x86-userdebug  
17. mini_emulator_x86_64-userdebug  
18. aosp_hammerhead-userdebug  
19. aosp_mako-userdebug  
20. aosp_shamu-userdebug  
21. aosp_manta-userdebug  
然后选择Nexus5 对应的版本aosp_hammerhead-userdebug  对应关系可以从google官方XX获得。
$ 18
$ make -j8
 
第四步:开始刷机
电脑连接手机后,在安卓源代码的根目录下输入:
$ sudo adb reboot bootloader
手机随后就会进入recovery模式
$ fastboot flashall –w 
(或者 fastboot -w flashall)
等待几分钟后,手机成功重启,刷机成功。
zero@zero-HP-Pro-3380-MT:/media/zero/ANDROID/AOSP5.0$ fastboot -w flashall  
Creating filesystem with parameters:  
Size: 13725835264  
Block size: 4096  
Blocks per group: 32768  
Inodes per group: 8144  
Inode size: 256  
Journal blocks: 32768  
Label:   
Blocks: 3351034  
Block groups: 103  
Reserved block group size: 823  
Created filesystem with 11/838832 inodes and 93654/3351034 blocks  
Creating filesystem with parameters:  
Size: 734003200  
Block size: 4096  
Blocks per group: 32768  
Inodes per group: 7472  
Inode size: 256  
Journal blocks: 2800  
Label:   
Blocks: 179200  
Block groups: 6  
Reserved block group size: 47  
Created filesystem with 11/44832 inodes and 5813/179200 blocks  
--------------------------------------------  
Bootloader Version...: HHZ11k  
Baseband Version.....: M8974A-1.0.25.0.23  
Serial Number........: 0816a5d400ede284  
--------------------------------------------  
checking product...  
OKAY [  0.100s]  
sending 'boot' (8852 KB)...  
OKAY [  0.482s]  
writing 'boot'...  
OKAY [  0.776s]  
sending 'recovery' (9552 KB)...  
OKAY [  0.545s]  
writing 'recovery'...  
OKAY [  0.810s]  
erasing 'system'...  
OKAY [  1.070s]  
sending 'system' (354297 KB)...  
OKAY [ 11.312s]  
writing 'system'...  
OKAY [ 25.338s]  
erasing 'userdata'...  
OKAY [  8.542s]  
sending 'userdata' (137318 KB)...  
OKAY [  4.521s]  
writing 'userdata'...  
OKAY [  9.131s]  
erasing 'cache'...  
OKAY [  0.642s]  
sending 'cache' (13348 KB)...  
OKAY [  0.630s]  
writing 'cache'...  
OKAY [  1.071s]  
rebooting...
finished. total time: 65.651s  
 
刷机常见问题:
问题一:输入sudo adb reboot bootloader
提示error: device not found
解决:手机中开发者模式里面,一定要打开USB调试。
 
问题二:如果打开USB调试后,仍然ADB无法连接。
解决:
先在/etc/udev/rules.d/目录下新建一个文件51-Android.rules然后在终端输入lsusb查看usb连接情况:
zero@zero-HP-Pro-3380-MT:~$ lsusb  
Bus 002 Device 003: ID 0480:0210 Toshiba America Info. Systems, Inc.   
Bus 002 Device 007: ID 18d1:4ee0 Google Inc.   
据第二行这个google手机的ID:18d1 和 4ee0 这两个数值
编辑文件51-Android.rules输入
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee0", MODE="0666", OWNER="<username>"
然后保存
$sudo chmod a+rx /etc/udev/rules.d/51-Android.rules
$sudo service udev restart
 
问题三:完成问题二的修改的基础上,在手机的fastboot模式下,输入fastboot -w flashall  提示< waiting for device >
这是由于fastboot权限不够,输入fastboot -l devices  会提示 no permissions fastboot 
adb调试是在手机开机的状态下进行,而fastboot是在手机关机的时候进行。两者有区别,fastboot的调试需要的是root权限。必须把fastboot的拥有者设置为root。
因此
$ which fastboot
找到fastboot所在的路径
然后
$ cd xxxx(fastboot的路径)
$ sudo chown root:root fastboot
$ sudo chmod +s fastboot
然后记得必须拔掉usb连接线,重新连接才能有效。
 
本文永久更新地址:http://www.linuxdiyf.com/linux/25735.html