CM7源码的同步、编译和异常处理教程


1、安装ADB,这是为了再后面提取手机中的文件时用到的,这一步也可以在第五步之前做。 大家可以参考:Howto: Install the Android SDK 这里我说一下主要的东西,eclipse可以先不装,并不影响咱们这篇教程。以后用到了再装也不迟。下载最新版的SDK: SDK Starter Package,我放到了~/android/目录下,并解压。最终目录为~/android/android-sdk-linux。 终端下执行命令:
代码:
cd ~/android/android-sdk-linux/tools
./android

如果提醒权限不足,执行:
代码:
chmod a+x android

然后再执行./android。 执行成功后,选中那个含有platform-tools的选项,选择下载。下载完成后,添加环境变量: 
代码:
gedit ~/.bashrc

再文本最后添加:
代码:
export PATH=$PATH: ~/android/android-sdk-linux/platform-tools

然后,让我们的环境变量生效:
代码:
source ~/.bashrc

2、安装编译环境所需要的工具包,注意你的系统是64位的还是32位的。 64位和32位都需要安装的包,执行: 
代码:
sudo apt-get install git-core gnupg flex
bison gperf libsdl1.2-dev libesd0-dev libwxgtk2.6-dev squashfs-tools
build-essential zip curl libncurses5-dev zlib1g-dev sun-java6-jdk pngcrush
Schedtool

64位另外需要安装的包:
代码:
sudo apt-get install g++-multilib
lib32z1-dev lib32ncurses5-dev lib32readline5-dev gcc-4.3-multilib
g++-4.3-multilib

选择yes,等待安装完成就行了。在此步中安装sun-java6-jdk时遇到了麻烦,所看的教程中的源地址都已经失效,无法完成安装。最后自己是从官方下载的bin包,手动安装完成的。这里提供一个可用的源,但是速度比较慢。
代码:
sudo add-apt-repository deb
http://us.archive.ubuntu.com/ubuntu/ hardy multiverse
sudo apt-get update
sudo apt-get install sun-java6-jdk

3、创建源码目录 
代码:
mkdir -p ~/bin
mkdir -p ~/android/system

安装repo:
代码:
curl 
https://dl-ssl.google.com/dl/googlesource/git-repo/repo ~/bin/repo
chmod a+x ~/bin/repo

将repo导入环境变量,编辑~/.bashrc,在文本最后添加:
代码:
export PATH=$PATH:~/bin

保存,执行:
代码:
source ~/.bashrc

让环境变量生效。4、开始同步源码
代码:
cd ~/android/system/
repo init -u 
http://github.com/CyanogenMod/android.git -b gingerbread

此时需要提供一个用户名和email,如果大家以后想要上传代码,email需是谷歌账户。开始同步:
代码:
repo sync -j16

同步过程中需要一个好的网速,自己的破网速同步了n次都没成功。用公司的网才搞定。同步完成时,输出为:Syncing work tree 100%。如果大家觉得源码庞大,可以不同步一些自己不需要的设备,只同步自己的机型也行。CM9默认是不同步任何设备的。编辑~/android/system/.repo/manifest.xml文件,./repo是隐藏文件。注释掉自己不需要的设备,如:
代码:
!--
project path=device/bn/encore name=CyanogenMod/android_device_bn_encore /
project path=device/commtiva/z71 name=CyanogenMod/android_device_commtiva_z71 /
project path=device/dell/streak7 name=CyanogenMod/android_device_dell_streak7 /
project path=device/elocity/a7 name=CyanogenMod/android_device_elocity_a7 /
project path=device/geeksphone/one name=CyanogenMod/android_device_geeksphone_one /
project path=device/geeksphone/zero name=CyanogenMod/android_device_geeksphone_zero /
--

最后在同步完成时,还要编辑 vendor/cyanogen/products/AndroidProducts.mk 文件,也去掉未同步的project。给大家提供一个脚本文件,可以在同步失败的情况下循环执行命令,不用人工值守:
代码:
#!/bin/sh
while true
do
if repo sync -j16
then
echo Syncing work tree...
break
else
echo error:Exited sync due to fetch errors
repo sync -j16
fi
Done

5、提取设备专属私有文件,连接你的手机,开启adb调试,执行
代码:
cd ~/android/system/device/zte/blade/
./extract-files.sh

此步需要用到adb,我们在第一步已经安装。但是adb首次运行需要在超级权限下,切换到超级管理员sudo su,然后adb kill-server,再 adb start-server。以后什么时候运行也行了。6、开始编译 首先要检查一下是否是最新源码:
代码:
cd ~/android/system/
repo sync

等待同步完成。编译ROM包:
代码:
./build/envsetup.sh brunch blade

如果提示brunch未安装,执行
代码:
source build/envsetup.sh brunch blade

就开始编译了。如若出现这样的错误:
******************************
You have tried to change the API from what has been previously approved.


To make these errors go away, you have two choices:
1) You can add @hide javadoc comments to the methods, etc. listed in the
errors above.


2) You can update current.xml by executing the following command:
make update-api


To submit the revised current.xml to the main Android repository,
you will need approval.
******************************

则执行:
代码:
make update-api

再重新编译就OK了。输出目录为:out/taget/product/blade下的zip文件。
例如我的ROM包文件名是:cm-7-20120709-UNOFFICIAL-blade.zip

资源来源于网络。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值