编译 i9000的cm系统

[color=red][b]此文 并不算是菜鸟教程,可以配合提供的链接一起看,希望谅解.[/b][/color]

一直以来,都想自己编译一个系统。只是没有去实践,今天实践成功了,并不难,难的都被cm团队做完了。剩下的就是下载,编译就可以了。

编译这个系统,失败过一次,网上都没 人提到,编译所需要的环境。
首先是硬盘空间,装个linux,8g现在ubuntu少于这个值不让装。
home空间直接分配为单独的区,70g+
据官方文档说明,如果单个系统(我只编译i9000),缓存要25g,如果是多个,可以提高到50-70g。
目录大小65g,包含下载的源码,2014-8-2号是12g*2会耗去24g左右,编译会耗去35-40g
还需要安装jdk1.6/1.7,如果你安装了1.8,不好意思,不支持。
还需要安装sdk,弄个最新的apilevel20,耗去1g左右空间。

i9000安装包完成后是190m,目测gs5安装包1g,

总耗去home空间是接近65g了。所以准备个70g硬盘是必须的。第一次就是40g空间,结果编译不成功。然后源码下载 了两天。


下载,需要一个repo文件,这个需要过墙,附件会上传。
下载是分两步的,一部分是源码,完了以后,运行一些命令,如breakfast,最后brunch galaxysmtd运行后会下载驱动,我的是560m左右,如果是gs5,可能要很多。

完成之后还得连接手机,拉一些文件出来,我不知道没有root的手机是否可以获取这些文件。反正我的是可以。装过n个系统,刷了无数次的机了。
9300 系列建议不要刷了,容易爆。

官方文档:
http://wiki.cyanogenmod.org/w/Build_for_galaxysmtd
同时有一些参考:
http://blog.csdn.net/libelosophy/article/details/22997805
http://3w.angeeks.com/thread-2970803-1-1.html

下载:
repo init -u git://github.com/CyanogenMod/android.git -b cm-11.0
同步repo sync -j4,依网速,大概时间少不了吧。

没有在下载前研究下manifest文件,而我是在下载完成之后才按上面的文章修改的。果然快不少。
源码已经下载了,
然后我进行修改,自定义manifest文件,为cm11.xml,(这个可以在repo初始化后就可以修改了.像上面文章提到的下载优化什么的.)
然后repo init -m cm11.xml
repo sync -j4同时我把cm11.xml里面的一些包去除了,这些用不上,
同步最后会把去除的那些包删除的。(如果不删除,估计硬盘空间占用会多一些。)
日志:
Deleting obsolete path /home/angus/cm11/packages/apps/Browser
Deleting obsolete path /home/angus/cm11/packages/apps/CMAccount
Deleting obsolete path /home/angus/cm11/packages/apps/CMFileManager
Deleting obsolete path /home/angus/cm11/packages/apps/CMHome
Deleting obsolete path /home/angus/cm11/packages/apps/CMUpdater
........
最后:brunch galaxysmtd编译,
机器配置i5 3470, amd7470,8g内存,500g7200转硬盘,编译大概3小时,不算长。笔记本吃不消。
话说ubuntu的xorg-xf86-video-ati驱动只能用一个字来形容"差",也可能是其它原因吧.换成fglrx就明显好多了.否则编译起来,机器都动不了.像死机了一样.当然我的笔记本烂卡,什么驱动都启动不了x.只有切换到intel卡.

最后在imgdiff停下来了,我以为一会就行,没想到好久,发现目录不可写,于是在/tmp/中查看日志中的目录,修改了,权限,目录的属主chown,chmod两个命令。后面似乎也没有用到这目录,然后ctrl +c停止了,再重来。

几分钟就生成了zip文件,
有一点需要注意,在/out/..../system/app下面的apk如果编译后不手动删除,只是在前面的cm11.xml中删除了,编译后,会直接打包的,你可以把你需要的apk放到这个目录,暂没有去研究放在其它哪个目录,会在编译时复制过来。预装软件一般是放这里的
也没有研究private-app下哪个可以配置删除的。

附件上传了repo文件,就不用下载了。 里面包含前面的三个文章网页。


经过第一次编译后,写了个脚本,后来直接运行一个命令就可以了.脚本放到cm11目录中:名为:build_galaxysmtd.sh
因为本人装的jdk是1.8,但编译最高为1.7,所以重新定义了.

#!/bin/bash
export JAVA_HOME=/home/angus/jdk1.7.0_65
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin:$ANDROID_SDK_ROOT:$ANDROID_SDK_ROOT/platform-tools/:$ANDROID_SDK_ROOT/tools/:$ANDROID_NDK_ROOT:/home/angus/bin

echo "JAVA_HOME:"
echo "$JAVA_HOME"

echo "repo sync"
repo sync -j4

echo "source build/envsetup.sh"
source build/envsetup.sh

echo "breakfast galaxysmtd"
breakfast galaxysmtd

export USE_CCACHE=1

echo "prebuilts/misc/linux-x86/ccache/ccache -M 25G"
prebuilts/misc/linux-x86/ccache/ccache -M 25G

echo "croot"
croot

echo "brunch galaxysmtd"
brunch galaxysmtd

运行./build_galaxysmtd.sh,如果权限不对,修改下chmod u+x build_galaxysmtd.sh,只是修改为用户可执行的.(当前用户建立的默认是这个,不需要修改)
或者chmod 777 build_galaxysmtd.sh 打开所有权限




你可能感兴趣的:(编译)