Android 5.0.1(Lollipop)源码的下载、编译(eng版本)并烧录到Nexus 4

来源:互联网 发布:甜甜圈是什么软件 编辑:程序博客网 时间:2024/05/17 01:10

1.配置Linux编译环境

  • 安装JDK

AOSPAndroidOpen Source Project)需要Java7支持,在Ubuntu中使用OpenJDK,安装方法如下:


$ sudo apt-get update
$ sudo apt-get install openjdk-7-jdk
  • 安装需要的包(只针对Ubuntu14.04

$ sudo apt-get install bison g++-multilib git gperf libxml2-utils
  • 配置USB连接和设置编译好的output文件目录等在此不作详细介绍(不影响编译效果)

2.下载Android源码

  • 创建Repo客户端

①.创建新的目录WORKING_DIRECTORY来存放工作文件:

$ mkdir WORKING_DIRECTORY
$ cd WORKING_DIRECTORY


②.运行repoinit获取最新的Repo版本(推荐),之后下载的源码将存放在工作路径WORKING_DIRETORY中:


$ repo init -u https://android.googlesource.com/platform/manifest


或者指定下载任一版本(Branch),在创建Repo客户端时使用-b选项:


$repo init -u https://android.googlesource.com/platform/manifest-b android-5.0.1_r1


(注:由于没有安装Repo必要软件,会提示安装RepoGit相关软件,按照提示安装即可)


Repo初始化时会提示配置real nameemail addressemail address需要是连接到注册的Google账号的地址(推荐直接使用Gmail邮箱),real name在提交代码时会显示在代码信息中


  • 下载Android代码树

这里运行下面一条指令直接下载上一步指定的安卓版本的源码:


$repo sync


等吧,最快可能也要五六个小时.....好像只能开代理下.....


3.获取硬件驱动

  • Google提供的所有Nexus系列设备的硬件驱动的二进制文件在以下网址中均可下载 https://developers.google.com/android/nexus/drivers#makolrx22c 我手中的是Nexus4,也可根据自己手机型号选择,找到“Nexus4 binaries for Android 5.0.1(LRX22C),有3个硬件驱动的压缩包,分别是qcom-mako-lrx22c-1146e92c.tgzlge-mako-lrx22c-ad9be737.tgzbroadcom-mako-lrx22c-ea539f92.tgz

  • 下载完成后将三个压缩包解压至Android源码根目录(WORKING_DIRECTORY),得到三个.sh文件extract-broadcom-mako.shextract-lge-mako.shextract-qcom-mako.sh,分别执行这三个shell脚本(会提示是否接受License之类的,IACCEPT即 可),会在源码目录下新生成一个/vendor目录,里面就是Nexus4所需的相关硬件驱动二进制文件

一定要在编译Android源码前确保在源码根目录有官方提供的硬件驱动目录vendor,否则编译完成烧录后reboot会因为缺少硬件驱动卡在Google启动画面上

4.编译Android源码

  • 初始化编译环境


执行初始化编译环境的脚本:

$ source build/envsetup.sh


  • 选择一个Target


使用lunch指令制定编译的target,具体的配置可以通过参数来指定,例如:


$lunch aosp_arm-eng

这行指令用来编译一个完整的模拟器emulator,所有的debug都是开启的。


所有的target形式都是BUILD-BUILDTYPE,其中BUILD是一个特定代码集合的名称,如Nexus4的代码名称就是occammako)。

BUILDTYPE即编译的模式,有一下三种:

-user:受限的访问,适用于发行版的产品

-userdebug:和”user”模式类似,但是有root权限访问并具有debug功能,适用于debug

-eng:工程机的模式,用于在开发配置中添加新的debug工具等


显然,我们需要进行eng模式的编译,Nexus4的编译配置是:


$lunch full_mako-eng                                      


  • 编译代码

使用make指令,GNUmake指令可以通过-jN选项进行并行操作,N的设置在此不多介绍,我使用8个任务并行的指令:


$make-j8


5.解锁Bootloader

  • 只有在Bootloaderunlock模式下才可能烧录定制的系统,Nexus4设备默认的Bootloader都是locked的,需要解锁。先把Nexus4关机,然后同时按住音量的2个键和power键,进入fastbootmode,执行下面命令解锁:


$fastboot oem unlock


  • 官方推荐在烧录系统前格式化cacheuserdate,注意在执行下面命令前做好手机数据的备份:


$fastboot format cache

$fastboot format userdata


6.刷入Android5.0.1适配的Bootloader和基带版本

  • 从官方提供的出厂镜像中可以找到合适的Bootloaderradio信息,如果不执行这步,查看Settings->"Aboutphone”->"Baseband version"为“unknown”,更简单的说,打不了电话....


google factory image: https://developers.google.com/android/nexus/images

nexus4 factory image: https://developers.google.com/android/nexus/images#occamjdq39


 我下的是FactoryImages "occam" for Nexus 45.0.1(LRX22C).zip文件解压后的文件信息如下:

bootloader-mako-makoz30f.img (Nexus 4 bootloader镜像)

flash-base.sh

flash-all.bat

image-occam-lrx22c.zip(出厂镜像)

flash-all.sh

radio-mako-m9615a-cefwmazm-2.0.1701.05.img(Nexus 4的基带镜像)


  • bootloaderradio刷入Nexus4,我使用了自己的路径,注意要替换成你的路径:

    $fastbootflash bootloader/mnt/software/factory-image/occam-lrx22c/bootloader-mako-makoz30f.img

刷好bootloader后重启进入bootloader用最新的bootloader进行烧录radio和编译好的rom:


$fastboot reboot-bootloader


刷入基带radio:


$fastbootflash radio/mnt/software/factory-image/occam-lrx22c/radio-mako-m9615a-cefwmazm-2.0.1701.05.img


6. 执行(for emulator/烧录(for Nexus 4

  • 模拟器运行

如果在选择编译模式时采用full_arm-eng或者aosp_arm-eng等的参数时可以进行模拟器运行:

$emulator


  • 烧录到设备(Nexus4)

完整的Android 5.0.1可以通过一行简单的命令刷入Nexus 4,它在检测bootloaderradio版本和编译好的Android版本匹配后把bootrecoverysystem文件分区烧录到设备中,命令里的“-w”参数是wipe,就是把所有的user data格式化,如果有要保留的数据注意备份:

$fastboot-w flashall


烧录完成后会reboot到开机启动界面,Android 5.0.1Nexus 4工程机版本的编译烧录全部完成,enjoy it~


参考博客:http://blog.163.com/zhou_411424/blog/static/19736215620139101154776

0 0
原创粉丝点击