当前位置:首页 » JAVA技术教程

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

2015-01-07 13:10 本站整理 浏览(8674)

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


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
name
email 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 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
的基带镜像)






  • 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)



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



$fastboot
-w
flashal
l




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




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