Ubuntu 12.04 64位编译cm-10.2 总结

参考:http://wiki.cyanogenmod.org/w/Build_for_i9300

安装相关库。如git, open sdk, python等;

安装android sdk,需要连接手机获取一些文件,而且手机必需刷cm-10.2的rom.

http://developer.android.com/sdk/index.html

安装android sdk 解压android sdk后修改

sudo gedit /etc/hosts/
74.125.237.1 dl-ssl.google.com

执行tool/android update sdk更新后就有platform-tools目录和adb了,执行adb devices查看设备是否已经连接, 下一个cm的rom刷入http://get.cm/?device=i9300 版本和你编译版本一致。

1. 不要使用Ubuntu 12.04 32位,太吭了,搞了大半月没有搞定,无耐换装64位系统,1天搞定了

注意32位下载的代码不要全删掉,把.repo目录压缩一下,大概9G左右,放到windows分区去。再装64位系统,

64位系统安装好后,新建一个目录如cm-10.2, 执行

附件提供了repo, 可以googlecode下载repo 1.19的版本。

repo init -u git://github.com/CyanogenMod/android.git -b cm-10.2

repo sync

ctrl+x 停掉repo sync, 再把原来备份的.repo/project目录覆盖到cm-10.2/.repo/project目录,这样基本就不用再下以前的代码了,会30分钟左右就下完代码,应该不是下完,repo好像是从.repo/project目录复制到外边cm-10.2目录下,坑人么,搞两份代码。

2. Ubuntu12.04基本上要留50个磁盘空间,分区大概如下:

     /swap     交换分区2G(和你的内存大小一样)、

    /               根分区安装系统 大概留8G左右,最小5G,不过还是留大点好防止系统分区太小

    /home     home分区,剩下全留全home分区,主要为编译,我剩下的就45G左右

我的分区情况, 代码同步完成后:

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda9       7.4G  4.4G  2.7G  63% /
udev            993M  4.0K  993M   1% /dev
tmpfs           401M  916K  400M   1% /run
none            5.0M     0  5.0M   0% /run/lock
none           1002M  156K 1002M   1% /run/shm
/dev/sda10       45G   21G   22G  48% /home

 编译完成后:

wv@wv-ThinkPad-SL:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda9       7.4G  4.4G  2.7G  63% /
udev            993M  4.0K  993M   1% /dev
tmpfs           401M  908K  400M   1% /run
none            5.0M     0  5.0M   0% /run/lock
none           1002M  156K 1002M   1% /run/shm
/dev/sda10       45G   36G  6.5G  85% /home
wv@wv-ThinkPad-SL:~$

3. 编译过程中:

repo init -u git://github.com/CyanogenMod/android.git -b cm-10.2

repo sync

cd cm-10.2/vendor/cm

./get-prebuilts      //(这一步是为了下载Term.apk并解压到当前propritary目录) (只需执行一次,以后编译无需执行)

cd ../..

source build/envsetup.sh

breakfast i9300

//(这一步会自动从github下载   三星I897[代号captivatemtd]设备的驱动和内核; 注意 必须是CM官方支持升级到cm10.1的设备才能使用这个命令下载到//内核和驱动!!!) (只需执行一次,以后编译无需执行)

这步会报错, 因为找不到device i9300

直接到

https://github.com/CyanogenMod/android_device_samsung_i9300
https://github.com/CyanogenMod/android_device_samsung_smdk4412-common

下载后解压到 cm-10.2/device/samsung/i9300和cm-10.2/device/samsung/smdk4412-common

git clone https://github.com/CyanogenMod/android_device_samsung_i9300 -b cm-10.2

其它设备可以参考

https://github.com/CyanogenMod/android_device_samsung_设备名 从github上下载。

手机上刷9300  cm10.2的rom 并连接上手机,之前要安装androis sdk,

cd cm-10.2/device/samsung/i9300

chmod a+x extract-files.sh

./extract-files.sh     // (这条命令实际上都是组织好的的adb pull,它将真机中的部分库和依赖文件拷贝到本地源码环境,辅助编译!因为部分库和依赖文件的源码我们无法获取,

//相关厂商只提供了这些编译好的东东!这一部很重要,如果跳过,即时编译ROM成功,刷机后手机也跑不起来的!) (只需执行一次,以后编译无需执行)

说明: 如果你不想预先把手机刷成CM10.1,可以以文本打开extract-files.sh,就看到里面其实都是拷贝文件的操作。那么你解压从官方获取的cm10.1的rom压缩包,逐个拷贝相应文件到源码环境相应目录,并编辑相应目录的mk文件,加入 "PRODCUT_COPY_FILES + =..." 这样的语句也是可以的,但是很麻烦!

croot
brunch i9300

开始真正的编译,编译过程中没有出现任何问题,大概4个小时左右编译完成。

mon.Partition object at 0x29f2710>}
fstab_version             = (int) 2
mkbootimg_args            = (str) 
mkyaffs2_extra_flags      = (str) -c 4096 -s 128
recovery_api_version      = (int) 2
recovery_size             = (int) 8388608
selinux_fc                = (str) /tmp/targetfiles-corf9Q/BOOT/RAMDISK/file_contexts
system_size               = (int) 1610612736
tool_extensions           = (str) device/samsung/i9300/../common
userdata_size             = (int) 12381585408
using device-specific extensions in device/samsung/common
unable to load device-specific module; assuming none
building image from target_files BOOT...
  running:  mkbootfs -f /tmp/targetfiles-corf9Q/META/boot_filesystem_config.txt /tmp/targetfiles-corf9Q/BOOT/RAMDISK
  running:  minigzip
  running:  mkbootimg --kernel /tmp/targetfiles-corf9Q/BOOT/kernel --cmdline console=ttySAC2,115200 --base 0x40000000 --pagesize 2048 --ramdisk /tmp/tmpktqmNH --output /tmp/tmp33v1T7
  running:  openssl pkcs8 -in build/target/product/security/testkey.pk8 -inform DER -nocrypt
  running:  java -Xmx2048m -jar /home/wv/source/android/cm-10.2/out/host/linux-x86/framework/signapk.jar -w build/target/product/security/testkey.x509.pem build/target/product/security/testkey.pk8 /tmp/tmpdhEqjX /home/wv/source/android/cm-10.2/out/target/product/i9300/cm_i9300-ota-eng.wv.zip
done.
Package Complete: /home/wv/source/android/cm-10.2/out/target/product/i9300/cm-10.2-20130921-UNOFFICIAL-i9300.zip
wv@wv-ThinkPad-SL:~/source/android/cm-10.2$ 
 

可以看到编译后包!

cm-10.2/out/target/product/i9300/cm-10.2-20130921-UNOFFICIAL-i9300.zip

参考:

http://www.cnblogs.com/tomsen/archive/2013/06/04/3115460.html

http://wiki.cyanogenmod.org/w/Build_for_i9300

 *****************************************************************************************

Other:

 https://gerrit.googlesource.com/git-repo/clone.bundle

curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo ~/bin/repo
repo init -u git://github.com/CyanogenMod/android.git -b cm-10.2
sudo ~/bin/repo init -u https://github.com/CyanogenMod/android.git -b cm-10.2
~/ext-3/android/bin/repo sync -fj16

http://www.360doc.com/content/10/0221/10/155970_16310464.shtml

make:进入目录'/home/wv/android/cm-10.2'
make: *** 没有规则可以创建“out/target/product/generic/obj/EXECUTABLES/netd_intermediates/LINKED/netd”需要的目标“out/target/product/generic/obj/lib/crtbegin_dynamic.o”。 停止。
make:离开目录“/home/wv/android/cm-10.2”

github报错:
1.Error: The requested URL returned error: 403 while accessing  
2.# https://github.com/user/repo.git/info/refs  
3.# fatal: HTTP request failed 
Error: The requested URL returned error: 403 while accessing
# https://github.com/user/repo.git/info/refs
# fatal: HTTP request failed

查看官方的指南:
https://help.github.com/articles/https-cloning-errors

结果发现git版本为1.7.4,(git --version)而官方提示必须是1.7.10及以后版本

升级
增加ppa
sudo apt-add-repository ppa:git-core/ppa
sudo apt-get update
sudo apt-get install git
如果本地已经安装过Git,可以使用升级命令:
sudo apt-get dist-upgrade

使用make snod重新生成system.img

猜你喜欢

转载自wv1124.iteye.com/blog/1944448