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

转载:

Android 5.0.1(Lollipop)源码的下载、编译(eng版本)并烧录到Ne,有需要的朋友可以参考下。

1.配置Linux编译环境

安装JDK

AOSP(AndroidOpen 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必要软件,会提示安装Repo和Git相关软件,按照提示安装即可)

③在Repo初始化时会提示配置real name和email address,email 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.tgz、lge-mako-lrx22c-ad9be737.tgz、broadcom-mako-lrx22c-ea539f92.tgz

下载完成后将三个压缩包解压至Android源码根目录(WORKING_DIRECTORY),得到三个.sh文件extract-broadcom-mako.sh、extract-lge-mako.sh、extract-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的代码名称就是occam(mako)。

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

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

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

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

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

$lunch full_mako-eng

编译代码

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

$make -j8

5.解锁Bootloader

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

$fastboot oem unlock

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

$fastboot format cache

$fastboot format userdata

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

从官方提供的出厂镜像中可以找到合适的Bootloader和radio信息,如果不执行这步,查看“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 4的5.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的基带镜像)

把bootloader和radio刷入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)

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

$fastboot -w flashall

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值