从google源代码编译nexus 4可用的4.2.2

转自:https://www.skylast.com/archives/6752


这个笔记描述了从AOSP源代码中编译一个具有完整功能的Nexus 4 Rom的过程。下文引用的代码部分未作格式化处理,粘贴复制需谨慎。$ 表示普通用户的bash提示符。

环境准备:

1. Ubuntu 12.10 64bit. 长期支持版的Ubuntu(10.04,12.04)是官方推荐的,但是这个也可以,必须是64位的。

2. Oracle JAVA SDK. Ubuntu以openjdk替换掉了Oracle的sdk。这个笔记里面使用的是Oracle JAVA 1.6版本。你可以通过下列命令安装它:

$ sudo add-apt-repository ppa:webupd8team/java
$ sudo apt-get update
$ sudo apt-get install oracle-java6-installer

安装过程需要同意Oracle的授权协议。

3. 安装编译需要的其他软件包:

$ sudo apt-get install git gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386

我建议最好运行两次上面的命令以确保没有遗漏什么东西。抓耳挠腮半天时间,发现原来是自己错漏了libx11-dev:i386。

4.还需要执行:

$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so

5.完成上面的步骤之后,编译环境已经准备完毕。

获取源代码:

1. 在个人home目录下建立bin文件夹,并把它包含到环境路径中:

$ mkdir ~/bin
$ vim ~/.bashrc
PATH=~/bin:$PATH  # 把这句添加到.bashrc文件的最后

2.获取源代码库:

$ mkdir nexus4 # 新建一个文件夹用来装源代码
$ cd nexus4
$ repo init -u https://android.googlesource.com/platform/manifest
$ repo sync

由于需要从Google的服务器上下载高达8G多的代码,所以这一步很漫长。最好选在网上网络低峰期挂机下载。

3.添加 su 和 superuser 到编译出来的系统中:

这一步是可选的,如果你不想root你的系统,可以跳过,否则:

a. AOSP编译的 userdebug 版的 rom 已经包含一个 su 文件,但是这个root权限在能用在adb shell中,所以这里用 ChainsDD 的 su 替换掉它。

$ mkdir ~/nexus4_backup
$ cd ~/nexus4_backup
$ cp -rf ~/nexus4/system/extras/su . # 备份原始的su源码

b. 替换:

$ cd ~/nexus4/system/extras
$ rm -rf su/
$ git clone https://github.com/nibua-r/su-binary.git su

c. 把 su 添加到 build/target/product/core.mk 文件中的 PRODUCT_PACKAGES 字段。

d. 编译Superuser.apk文件:

$ cd ~/nexus4/packages/apps
$ git clone https://github.com/ChainsDD/Superuser.git

e. 同样的需要把Superuser 添加到 build/target/product/core.mk 文件中的 PRODUCT_PACKAGES 字段。

f. 对Superuser.apk文件进行签名:

$ cd ~/nexus4
$ development/tools/make_key superuser ‘/C=AU/ST=Tas/L=Hobart/O=UTAS/OU=WhateverYouWant/CN=WhateverYouWant/emailAddress=eleven@skylast.com’
$ mv superuser.pk8 superuser.x509.pem build/target/product/security/

下载设备的专有驱动:

Nexus 4的驱动可以从Google的网站上下载到。分别下载三个压缩文件,把压缩包里面的三个文件分别拖到 ~/nexus4 文件夹中,依次执行:

$ ./extract-broadcom-mako.sh
$ ./extract-lge-mako.sh
$ ./extract-qcom-mako.sh

执行期间会出现许可协议,使用空格翻页,最后需要输入”I ACCEPT” 表示你接受这些繁琐到谁也不会看的玩意儿。

编译:

这是最激动人心的时刻,输入下列指令初始化编译环境:

$ souce build/envsetup.sh

然后执行:

$ lunch

会弹出一个选项列表,这里编译的是Nexus 4的rom,所以我选择11项.full-mako-userdebug.

执行编译:

$ make -j4

此处命令中的4表示以4个cpu线程编译,请根据你的CPU规格调整这个数字。过高的速度可能会导致编译失败甚至直接死机。

相当长(我的x220花了近3个小时)的一段时间过后,你会在~/nexue4/out/target/product/mako中找到适用于 fastboot 的刷机包。当然你也可以在make -j4后面加一个 otapackage 参数把rom打包成适用于第三方Recovery(例如CWM Recovery)的zip格式。

另外,aosp源码中并没有包含Google套件,你可以从这里下载最新的套件,使用CWM Recovery刷入即可。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值