我所建立的Nexus S编译环境是根据http://wiki.cyanogenmod.com/中关于Samsung Galaxy S来搭建的,操作系统是Ubuntu 10.04(64位)。
1.安装Android SDK,可以参考 http://www.linuxidc.com/Linux/2012-10/73173.htm 。
2.安装JDK,我使用的版本是jdk-6u33-linux-x64.bin安装包,可以参考 http://www.linuxidc.com/Linux/2012-10/73174.htm 。
3.安装编译所需要的包,下面摘抄自http://wiki.cyanogenmod.com/
For 32-bit &64-bit systems(必须安装的,不管是32位还是64位系统):
git-coregnupg flex bison gperf libsdl1.2-dev libesd0-dev libwxgtk2.6-dev squashfs-toolsbuild-essential zip curl libncurses5-dev zlib1g-dev pngcrush schedtool
For 64-bit only systems(如果是64位系统还需安装的):
g++-multilib lib32z1-devlib32ncurses5-dev lib32readline5-dev gcc-4.3-multilib g++-4.3-multilib
NOTE: gcc-4.3-multilib g++-4.3-multilib is no longer available for Ubuntu 11.04 64-bit, but should stillbuild without issue.
NOTE: On Ubuntu10.10, and variants, you need to enable the parter repository to installsun-java6-jdk:
add-apt-repository “debhttp://archive.canonical.com/ maverick partner”
(注意:由于sun-java6-jdk通过apt-get install已经没法下载安装了,所以请到官网去下载,手动安装,可以参考前面的文章)
4.创建代码存放文件夹
mkdir-p ~/bin
mkdir -p ~/android/system
5.安装repo
curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo> ~/bin/repo
chmoda+x ~/bin/repo
(最近发现上面的网址一直无法连接,可以尝试curl http://git-repo.googlecode.com/files/repo-1.12 > ~/bin/repo
或者从http://code.google.com/p/git-repo/downloads/detail?name=repo-1.12下载repo,然后复制到~/bin文件夹下)
6.同步代码,我选择的是cm10,device is crespo(Nexus S)
cd ~/Android/system/
repo init -ugit://github.com/CyanogenMod/android.git -b jellybean
reposync -j16
(这个同步过程视网速而定,我的2M小水流,足足花了7小时才完成)
7.为了方便后续同步(不报错),我把整个system文件夹拷贝到其他路径下(修改文件后,再同步会报错),然后执行find . -type d -name”.repo”|xargs rm -rf和find . -type d-name “.git”|xargs rm -rf,清除不需要的文件夹和文件,可以减少不少空间。
8.下载device文件包和kernel文件包
由于CM10刚出来,所以device下没有出现sumsung的文件夹,我是采取的是手动下载,下载网址为https://github.com/CyanogenMod/android_device_samsung_crespo,在左上角的branch中选择jellybean,单击zip按钮,然后就下载到一个zip包。然后在device下创建sumsung文件夹,把刚才下载的包解压缩到sumsung文件夹下,文件夹名称改成crespo。
如果需要编译kernel,到https://github.com/CyanogenMod/android_kernel_samsung_crespo中下载相应branch的zip包,在该project根路径下创建kernel文件夹,在kernel文件夹下创建sumsung文件夹,把下载的zip包解压到此处,然后文件夹名称改成crespo。
9.Copy proprietary files
从你的手机nexus s中拷贝一些文件出来。
刚才下载的device的zip包并没有包含extract-files.sh和setup-makefiles.sh两个文件,我是从ics branch中拷贝出来,文件拷贝完成后记得执行chmod a+x extract-files.sh setup-makefiles.sh
有了这两个文件后执行
cd ~/xxx/device/samsung/crespo/
./extract-files.sh
另外发现从手机copy出来的 文件中没有cypress-touchkey.bin,可以从以前的安装包中得到。
10.DownloadRomManager
执行./xxx/vendor/cm/get-prebuilts,下载相关文件。
11.编译
.build/envsetup.sh && brunch crespo
另外9-10步骤中提到的全部文件下载
下载在Linux公社的1号FTP服务器里
在 2012年LinuxIDC.com\10月\CM10编译环境和代码下载(Nexus S)
下载方法见 http://www.linuxidc.net/thread-1187-1-1.html
下载后把vendor文件夹覆盖你的工程中的vendor文件夹就可以了。