为Nexus4编译android4.2.2

上周入手了Nexus4,今天有时间自己编了包出来并成功烧到手机,现在总结一下过程。

过程主要参考了Android官方的两篇文章:“Building the System” 和 “Building for devices

第一步:download Android代码:

按照官方的介绍下载代码即可,注意Nexus4的branch可以用android-4.2.2_r1,Nexus系列手机和对应的android branch版本在 “Codenames, Tags, and Build Numbers” 都可以查到。我们家里是10M的联通光纤,昨天晚上一个多小时就下载完了,而且中间没有出现断链等情况,比较理想;


第二步:获得驱动

Google所有Nexus的手机驱动都可以在“Binaries for Nexus Devices”  取到, Nexus4的驱动文件一共有3个包:

NFC、 Camera、Sensors、Audio、DRm、Cryptography、Graphics、Bluetooth、Media等等,我们只需要下载这3个包,解压后得到3个sh文件,在解压的目录下分别执行这3个sh脚本(不分先后顺序),就可以得到vendor目录,下面包括了来自3个厂商的驱动代码,把这个vendor目录整个直接copy到源码目录下。


第三步:编译

执行命令:

$ source build/envsetup.sh

$ lunch

Nexus的工程代号是mako,其它nexus手机的对应代号可以从“Binaries for Nexus Devices”找到完整的对应关系。

You're building on Linux
Lunch menu... pick a combo:
     1. full-eng
     2. full_x86-eng
     3. vbox_x86-eng
     4. full_mips-eng
     5. full_grouper-userdebug
     6. full_tilapia-userdebug
     7. mini_armv7a_neon-userdebug
     8. mini_armv7a-userdebug
     9. mini_mips-userdebug
     10. mini_x86-userdebug
     11. full_mako-userdebug
     12. full_maguro-userdebug
     13. full_manta-userdebug
     14. full_toroplus-userdebug
     15. full_toro-userdebug
     16. full_panda-userdebug

Which would you like? [full-eng] 11

这里选择“11” 。

之后就可以使用make命令编译了:

$make -j10

经过一段稍微漫长的时间编译,在out/target/product/mako目录下就会生成三个img文件, ramdisk.img+userdata.img+system.img.

只要编译成功完成,就不用care这些文件,在当前shell下执行fastboot和adb看是不是都生成,如果没有的话就需要手动再编译出来,执行$make fastboot adb.


第四步:Bootloader解锁

我们买来的Nexus4默认都是锁了bootloader的,但是为了烧自己编的系统或者其他第三方ROM就需要解锁bootloader,google提供了接口让开发者可以方便的解锁。

先把Nexus4关机,然后同时按下两个音量键和power键,一直按住直到界面上出现bootloader的画面。

这时用usb线连上手机,在shell里执行:

$ fastboot oem unlock

幸运的话会得到结果如下:

root@y-desktop:~/my_repo/nexus4# fastboot oem unlock
...
OKAY [104.945s]
finished. total time: 104.945s

这个过程中间界面上会出现提示让你选择accept解锁,按照操作提示执行就oK


google的官方介绍里还给出了format cache和userdata的命令,觉得有必要的话也可以执行一下,注意数据备份。

root@y-desktop:~/my_repo/nexus4# fastboot format cache
erasing 'cache'...
OKAY [  0.022s]
formatting 'cache' partition...
Creating filesystem with parameters:
    Size: 587202560
    Block size: 4096
    Blocks per group: 32768
    Inodes per group: 7168
    Inode size: 256
    Journal blocks: 2240
    Label: 
    Blocks: 143360
    Block groups: 5
    Reserved block group size: 39
Created filesystem with 11/35840 inodes and 4616/143360 blocks
sending 'cache' (10984 KB)...
writing 'cache'...
OKAY [  1.270s]
finished. total time: 1.292s


# fastboot format userdata
erasing 'userdata'...
OKAY [  5.090s]
formatting 'userdata' partition...
Creating filesystem with parameters:
    Size: 14129561600
    Block size: 4096
    Blocks per group: 32768
    Inodes per group: 8144
    Inode size: 256
    Journal blocks: 32768
    Label: 
    Blocks: 3449600
    Block groups: 106
    Reserved block group size: 847
Created filesystem with 11/863264 inodes and 95427/3449600 blocks
sending 'userdata' (137438 KB)...
writing 'userdata'...
OKAY [ 15.479s]
finished. total time: 20.569s


第五步:烧系统

一切准备就绪后,就可以把编好的系统烧入手机了,执行命令:
root@nexus4# fastboot -w flashall

在Root目录下可能会提示ANDROID_PRODUCT_OUT变量不存在。退出root shell在刚刚编译的用户shell下看看ANDROID_PRODUCT_OUT的值然后再重新切到root下export一下即可:
error: neither -p product specified nor ANDROID_PRODUCT_OUT set
root@desktop:~/my_repo/nexus4# exit
exit
yu@yu-desktop:~/my_repo/nexus4$ echo $ANDROID_PRODUCT_OUT
/home/xxxx/my_repo/nexus4/out/target/product/mako
xxxx@xxxx-desktop:~/my_repo/nexus4$ sudo -s
root@xxxx-desktop:~/my_repo/nexus4# export ANDROID_PRODUCT_OUT=/home/xxxx/my_repo/nexus4/out/target/product/mako
root@xxxx-desktop:~/my_repo/nexus4# fastboot -w flashall
--------------------------------------------
Bootloader Version...: MAKOZ10o
Baseband Version.....: M9615A-CEFWMAZM-2.0.1700.48
Serial Number........: 019xxxxxxxxxxx [IMEI号]
--------------------------------------------
checking product...
OKAY [  0.002s]
sending 'boot' (5898 KB)...
OKAY [  0.372s]
writing 'boot'...
OKAY [  0.304s]
sending 'recovery' (6396 KB)...
OKAY [  0.402s]
writing 'recovery'...
OKAY [  0.325s]
erasing 'system'...
OKAY [  0.845s]
sending 'system' (234361 KB)...
OKAY [ 14.649s]
writing 'system'...
OKAY [ 13.133s]
erasing 'userdata'...
OKAY [  0.626s]
formatting 'userdata' partition...
Creating filesystem with parameters:
    Size: 14129561600
    Block size: 4096
    Blocks per group: 32768
    Inodes per group: 8144
    Inode size: 256
    Journal blocks: 32768
    Label: 
    Blocks: 3449600
    Block groups: 106
    Reserved block group size: 847
Created filesystem with 11/863264 inodes and 95427/3449600 blocks
sending 'userdata' (137438 KB)...
writing 'userdata'...
OKAY [ 15.491s]
erasing 'cache'...
OKAY [  0.038s]
formatting 'cache' partition...
Creating filesystem with parameters:
    Size: 587202560
    Block size: 4096
    Blocks per group: 32768
    Inodes per group: 7168
    Inode size: 256
    Journal blocks: 2240
    Label: 
    Blocks: 143360
    Block groups: 5
    Reserved block group size: 39
Created filesystem with 11/35840 inodes and 4616/143360 blocks
sending 'cache' (10984 KB)...
writing 'cache'...
OKAY [  1.274s]
rebooting...

至此,编好的系统已经烧入手机,手机会自动重启进入新的系统,编译和烧入手机算顺利完成。
但是进入启动后的手机你会发现,只有几个仅有的app,google native的应用都没有了,于是我们就要想办法恢复google的服务出来,我再单独写个笔记记录恢复google service的事情吧。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值