- 浏览: 538000 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
landerson:
明显就有要求的嘛
ANDROID轻量级JSON序列化和反序列化[转] -
jimode2013:
很不错,就是需要这个方法
多个UIViewController使用addSubView,第二个 UIViewController 不响应旋转[转] -
w11h22j33:
...
[转]NSMutableArray中的自动释放对象让我郁闷了一整天 -
w11h22j33:
UILabel* label = [[UILabel a ...
Iphone开发 -
w11h22j33:
http://mobile.51cto.com/iphone- ...
获得通讯录中联系人的所有属性[转]
Ubuntu10.0.4下CyanogenMod编译环境的搭建和可刷机文件的编译及打包(For HTC Dream)【转】
- 博客分类:
- Android定制及底层
http://www.linuxidc.com/Linux/2010-05/26287.htm
本文只是叙述Ubuntu下编译环境的搭建和ROM的编译过程,过程中可能会需要一些Ubuntu的常规操作技巧,在本文里就不详细介绍了,Ubuntu的新手可以通过谷歌学习一下,笔者也是新手,刚用没多久,谷歌一下并不难,另外由于源码和编译后生成的文件都比较大,如果想要折腾起来的话,Ubuntu的分区最好能有30G,20G的话一会就用完了,笔者之前也是分了20G,但不一会就空间不足了,故最后格掉分区,重新分了100G给Ubuntu。
编译环境的搭建
JDK安装
a) JDK是Ubuntu下使用Android SDK,编译源代码等必备的软件包,首先我们现来装这个
b) 从sun官方网站下载最新版的JDK,一般是个.bin的文件,笔者下载的是jdk-6u20-linux-i586.bin(根据文件不同,命令的也会有所变化,大家在使用的时候要注意,主要是文件名和路径的变化)。
c) 由于JDK运行时会在当前目录下安装,所以在安装前,先把它移动到你想要安装的目录,比如笔者将其安装在/usr/lib/jvm/java目录下,如果你也想安装在相同目录,可以照着我下面的命令来做
代码:
sudo –i
cd /usr/lib
mkdir jvm
cd jvm
mkdir java
cd java
cp “jdk-6u20-linux-i586.bin所在目录“/jdk-6u20-linux-i586.bin /usr/lib/jvm/java
chmod u+x jdk-6u20-linux-i586.bin
jdk-6u20-linux-i586.bin
此时会出现JDK的安装提示说明,按着回车不放,提示说明会持续滚动,www.linuxidc.com直到屏幕提示需要输入Yes/NO,输入YES后,即开始安装,安装完成后提示按回车继续,按完回车后,安装即告成功
d) 与Windows不同,Ubuntu是没有注册表的,故安装完成后,我们需要把我们安装JDK的目录告诉系统,故在刚才的终端里执行如下命令(如果是新开的终端,没有执行过“sudo -i”,则需要在命令前+“sudo”获得权限)
代码:
gedit /etc/environment
此时在会弹出一个文本编辑器,里面显示
代码:
PATH=”……”
其中省略号部分是其默认的路径,这里我们不要动它,我们需要对这个进行一些修改,将我们的JDK安装路径写进去,告诉系统我们的JDK装在哪里,去哪里调用,故做如下修改:
i. 在原有的 PATH=”……” 的省略号里面添加:
代码:
PATH=”……:/usr/lib/jvm/java/jdk1.6.0_20/bin”
ii. 添加两行,输入如下内容:
代码:
CLASSPATH=.:/usr/lib/jvm/java/jdk1.6.0_20/lib
JAVA_HOME=/usr/lib/jvm/java/jdk1.6.0_20
最后生成如下形式:
代码:
PATH=”……:/usr/lib/jvm/java/jdk1.6.0_20/bin”
CLASSPATH=.:/usr/lib/jvm/java/jdk1.6.0_20/lib
JAVA_HOME=/usr/lib/jvm/java/jdk1.6.0_20
其中,省略号部分是文件原有内容,我们在后面新加了一部分内容和两个新行。修改完成后保存退出。
e) Ubuntu有可能会自带JDK或者安装多个JDK,此时需要将我们安装的这个设置为默认
i. 首先,将我们的JDK安装目录加入到JDK的选择菜单,执行如下代码:
代码:
update-alternatives –install /usr/bin/java java /usr/lib/jvm/java/jdk1.6.0_12/bin/java 300
update-alternatives –install /usr/bin/javac javac /usr/lib/jvm/java/jdk1.6.0_12/bin/javac 300
ii. 其次,通过命令来选择默认的JDK,执行如下代码:
代码:
update-alternatives –config java
iii. 最后,再来检查一下系统当前的JDK版本,输入以下代码查看:
代码:
java -version
f) 至此,JDK即告安装成功。
Android SDK安装
a) 既然是做rom,那肯定需要调试和测试的工具,Android的官方SDK同样提供官方版本,我们直接下载安装即可。
b) 去谷歌的官网下载最新的SDK版本,前几天刚跟新了支持2.2的r6,不过SDK的官方网站在墙后,我们只能FQ过去下载,这点比较无奈。官方提供Windows,Mac OS X,Linux三个版本,毫无疑问,我们需要下载Linux的版本。
c) SDK不需要安装,直接解压就可以使用。建议放在主目录下,方便调用。
d) 为了方便adb命令的使用,我们同样需要将adb命令所在的目录添加到系统环境变量中去,这样,在任何目录下都能直接调用adb,不需要现cd到SDK目录,这样会比较方便,实现方法如下:
代码:
sudo gedit ~/.bashrc
用文本编辑器打开.bashrc文件,然后在最后添加一行:
代码:
export PATH=${PATH}:<你sdk的目录>/tools
这里的需要将你sdk的安装目录添写进去,保存后即可。
e) 把手机连上usb,然后在终端中输入:
代码:
adb devices
会列出所有连接在电脑上的Android设备,如果看到一串数字和字母的序列号的显示的话,即表示SDK安装成功。
软件安装
a) 配置源,更新源之类的问题就不再说了,直接说我们需要的软件,从同步源码到编译rom我们总计需要用到以下几个软件,有部分软件在我们更新过程中可能已经自动安装了,但这不影响我们工作,我把所有需要用到的程序列了出来:
? git-core
? gnupg
? flex
? bison
? gperf
? libsdl-dev
? libesd0-dev
? libwxgtk2.6-dev
? build-essential
? zip
? curl
? libncurses5-dev
? zlib1g-dev
? valgrind
? libreadline5-dev
b) 以上这些程序均通过apt-get命令来安装,比如要安装git-core软件,我们通过输入如下命令来实现:
代码:
sudo apt-get install git-core
c) 其它软件的安装过程类似,替换掉最后的软件名称即可。
d) 安装完所有软件后,编译CyanogenMod所需要的所有环境均搭建完成了。
源码同步
repo的安装
a) CyanogenMod的源码地址是http://github.com/cyanogen/android,你可以通过网址右上角的Download Source来下载源码。不过我们并不推荐这种方式下载,因为源码的变化较为频繁,每次一旦源码有变化,我们就需要重新下载完整的源码包,既费时又费力,效率也很低,故推荐通过repo同步的方式来做,在同步过程中,仅会同步源码的变化部分,效率较高。
b) Repo的安装
i. repo的安装比较方便,之需要下载一个文件,并设置成可执行权限,并添加到系统环境中去即可,具体命令如下:
代码:
cd ~
mkdir bin
在你的home根目录下创建名为bin的文件夹。
代码:
sudo gedit ~./bashrc
打开你的环境变量配置文件,在最后加一行:
代码:
export PATH=$PATH:~/bin
修改后保存文件退出,关闭终端,重新打开一个终端,输入如下命令验证路径是否成功添加到环境变量中去了:
代码:
echo $PATH
确认完后,开始安装repo,执行如下命令:
代码:
curl http://Android.git.kernel.org/repo > ~/bin/repo
chmod a+x ~/bin/repo
通过curl命令将repo下载到bin中,并将其权限修改为可执行文件,至此repo的安装结束。
Repo的配置和同步
i. 在主目录下新建一个文件夹,作为源码的存放目录
代码:
cd ~
mkdir cyanogenmod
cd cyanogenmod
ii. 在cyanogenmod目录执行repo命令,设定需要同步的源码内容:
代码:
repo init -u git://github.com/cyanogen/Android.git -b eclair
网址即为cyanogenmod的地址,-b表示我们选择需要同步的分支,cyanogenmod有不少分支,比如dount,eclair,以后还会有froyo,我们目前需要编译的是2.1,即eclair,则通过-b eclair来选择2.1的分支。
iii. 在配置过程中,会让你选择名字和邮箱,这个会显示在你最后编译出来的rom的基础信息里,可以选择你喜欢的来写
iv. 配置完成后,就可以开始同步源码了:
代码:
repo sync
同步的过程会比较长,建议在晚上睡觉前开始同步,一般早上起来就能好了。
编译环境的设置
编译环境的建立
a) 同步玩源码后,首先需要建立编译环境,CM的源码把这些命令都写成了脚本,我们只需运行相应的脚本即可,首先,先cd到源码的根目录,然后执行如下命令:
代码:
./build/envsetup.sh
执行后,屏幕上会显示:
代码:
including vendor/cyanogen/vendorsetup.sh
此时,编译环境设置成功。
专属文件的提取
a) 虽然Android系统是开源的,但有部分Dream的专属文件是不开源的,所以并不包含在源码树中。但如果希望rom能在Dream真机上运行,又需要这些文件,所以需要将这些文件提取出来,在CM中,这个操作比较简单,Steve已经给我们做好脚本了。
b) 首先你要确保安装成功了上述所有软件,然后,将Dream通过usb连接到电脑上。
c) cd到源码的/vendor/htc/dream_sapphire目录,然后执行脚本:
代码:
./extract-files.sh
d) 这个操作会调用adb命令,从你的手机里pull所需要的专属文件到vendor目录。
编译文件的修改
a) 默认的编译过程包含了所有的语言和程序,但其实我们并不需要这些,可以通过编译文件的修改来定义需要输出的语言和软件
b) 打开/vendor/cyanogen/products 目录下的cyanogen.mk文件,里面定义了要输出的软件和语言,对于不需要的软件,可以直接删除。但不建议在这里修改,可以从最后的输出目录里删除不需要的,直接在这里改容易出错
c) 在文件的最后,有一行”PRODUCT_LOCALES”,这里就包含了rom支持的语言类型,默认有几十种,编译出来后,软件会比较大,一般我们只需要保留其中的常用语言即可,笔者选择保留了en_US,zh_CN和zh_TW这三种语言,编译出来的软件就小了很多。
Kernel编译
1. kernel是Android的核心,也是最重要的部分,虽然CM源码中自带了编译完成的kernel,但既然是自主编译,那你肯定想改改kernel的信息吧,比如kernel的名字,比如打上BFS补丁、超频补丁等等,那你就需要自己来编译kernel了。
2. 编译kernel也非常简单,首先你需要一个kernel的配置文件,CM提供了现成的,直接去/kernel-msm/arch/arm/configs 目录里找,有个配置文件叫cyanogen_msm_defconfig,这个就是我们需要的配额之文件了(如果是给Nexus编译kernel的话,需要选择cyanogen_mahimahi_defconfig)。将它复制到/kernel-msm 的根目录,然后重命名为 .config
3. 用文本编辑器打开.config,其中有一条参数为CONFIG_LOCALVERSION=”-cyanogenmod”,这里即为kernel编译完成后显示的名字,可以把cyanogenmod改成任意你喜欢的名字。
4. 设置完成后,就可以开始编译了。先cd到/kernel-msm目录,然后执行如下命令
代码:
export ARCH=arm
export CROSS_COMPILE=arm-eabi-
export PATH=$PATH:~/cyanogenmod/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin
这些命令定义了编译kernel时所需要用到的环境和设置。注意第三条命令在输入的时候,路径要和自己实际安放源码的路径一致,另外,每次编译kernel前,都需要重新输入这三个命令。
5. 命令输入完后,就可以开始make了:
代码:
make -j3
make就是开始编译的命令,后面的参数-j3表示用于编译的cpu核心数量,一般是cpu核心数量+1,比如双核cpu,就用-j3这个参数。
6. 编译过程根据配置不同而有所不同,笔者笔记本用的T6400是双核2G的,一般编译kernel的时间在10分钟内。编译后的kernel生成在/kernel-msm/arch/arm/boot/目录下,名字叫zImage
CyanogenMod编译
1. 编译完kernel后,就可以开始编译主菜CM了。编译前需要先生成一个buildspec.mk文件,来定义需要编译的rom的基本信息。先cd到源码的根目录,新建一个空文件,名字叫buildspec.mk,并用记事本打开,输入如下信息:
代码:
TARGET_PRODUCT:=cyanogen_dream_sapphire
TARGET_BUILD_VARIANT:=eng
TARGET_BUILD_TYPE:=release
TARGET_PREBUILT_KERNEL:=kernel/arch/arm/boot/zImage
a) 第一条命令表示需要编译的rom的选择,我们现在编译的是G1的rom,故选择cyanogen_dream_sapphire;
b) 第二条命令表示编译的rom的种类,有eng和userdebug两个类型可选,我们当然选在eng;
c) 第三个命令表示编译的rom的类型,我们选择release
d) 第四个命令表示基于哪个kernel来编译rom,如果不设这个命令,则会基于自带的kernel来编译,既然我们自己编译了kernel,那当然用我们自己的,故设置了已经编译好的kernel的目录,供make过程调用。
2. buildspec.mk文件建立好后,就可以开始编译rom了,cd到源码根目录,然后使用命令:
代码:
make -j3
开始编译源码,源码的编译过程会比较长,试配置不同,需要的时间也不一样,笔者的T6400编译完整的CM差不多需要2个小时。
3. 编译完成后,我们的成品就在/out/target/product目录中,里面包含了system.img,recovery.img,boot.img和system文件夹等,到这里,有点制作rom经验的朋友就不需要我再多说了吧。可以在fastboot里直接刷system.img,和boot.img;也可以将system文件夹和boot.img打包成zip包,添加更新脚本并签名,通过recovery刷到机器里,至此,我们自己编译的CyanogenMod for HTC Dream就大功告成了。
评论
多线程同步下载
本文以CyanogenMod团队优化过的基于android2.1的源代码讲述如何将它移植到htc legend(g6)手机上。
个人认为CyanogenMod团队是目前非官方ROM开发中非常优秀的,它们制作的android源代码不仅仅可以移植到htc dream,margic,legend,hero,还可以移植到moto xt701,xt702等手机上,实属不容易。
成功将android2.1移植到手机上,需经过以下几个步骤:
一,准备好android2.1源码编译环境以及手机USB调试环境。
二,将手机上硬件驱动程序以及相关的配置文件通过ADB命令保存好。
三,针对不同的手机机型,制作相应的vendor配置文件。
四,编译源码。
五,通过手机提供的bootloader刷机或者直接以recovery的方式更新ROM。
在以上五个步骤中,其中最难处理的便是第2个步骤,这个步骤需要熟悉每个手机机型的硬件参数,并且能够在手机上找到相关的驱动程序以及了解他们如何配置。而CyanogenMod团队公布的源码当中,己经将相关的工作做好了,编译源码之前仅仅需要执行相应的shell命令,便可顺利的下载相应的手机驱动程序以及配置文件。
下面是移植步骤,供参考:
一,首先需要下载CyanogenMod 5.0.8的源码:
$ mkdir android-cm5
$ cd android-cm5
$ repo init -u git://github.com/CyanogenMod/android.git -b eclair
$ repo sync
二,下载CyanogenMod需要的一些共同文件,如果想最终版本中不需要这些APK,也可以通过配置/vendor/cyanogen/cyanogen.mk文件将这些需要的APK COPY命令注释掉。
$ cd vendor/cyanogen/
$ ./get-rommanager #下载一个RomManager.apk包,主要是刷ROM用的。我没用过。
$ ./get-google-files #其它的一些google开发的android apk包,我也没有用过!
三,下载针对htc legend(g6)的vendor.
$ cd ../../vendor/htc
$ git clone git://github.com/aleho/android_vendor_htc_legend.git #下载针对htc legend(g6)手机的vendor,里面包括相关的配置参数,以及从手机上下载驱动程序的SHELL命令。
$ mv android_vendor_htc_legend/ legend
$ cd legend
$ ./extract-files.sh #确保这个命令执行将你的手机连接好电脑并且开了手机USB调试,adb命令可以连接手机。这个过程主要是下载htc legend(g6)驱动程序以及配置文件。
四,针对CyanogenMod 5.0.8源码打上htc legend(g6)的补丁包,这个补丁包主要是wifi和触摸屏的,如果不做,触摸屏将无法触摸以及wifi功能无法启动。可参数地址:
http://forum.xda-developers.com/archive/index.php/t-702776.html
五,好了,根据自己的爱好,定制自己的一些vendor参数。然后make otapackage便可编译recovery方式的htc legend(g6)包。
发表评论
-
Android Launcher 分析【转】
2011-04-03 16:35 1958http://blog.csdn.net/fengke ... -
Android 中Goolgle 相关服务的移植[转]
2011-04-03 16:28 17021. 为什么需要移植? 首先,我编译了Android ... -
编译 android 2.1 (eclair) 源码 For HTC G1[转]
2011-03-27 15:51 20101. 说明 1) 下载编译最基本的android源码,无 ... -
从源代码编译Android(CyanogenMod For Hero GSM)【转】
2011-03-26 13:29 2726http://www.cnrgb.com/compile-cy ... -
在Android中使用OpenCv
2011-03-02 22:46 1285http://www.eoeandroid.com/threa ... -
android2.3源码下载编译全过程(附图及文档)修改版【转】
2011-03-02 22:43 2254原文http://www.eoeandroid.com ... -
Ubuntu 10.04(64位)下载并编译 Android 2.2 源码[只有11条命令]【转】
2011-02-13 23:44 2538为了方便,我把所有操作写成了命令,按顺序(软件安装--源码下载 ... -
动态壁纸探究[转]
2011-01-26 23:39 2051转自http://www.ophonesdn.com/ar ... -
LiveWallPaper 动态壁纸程序开发【转】
2011-01-26 17:47 4816通常手机屏幕 ... -
定制你自己的桌面--- launcher小觑[转]
2011-01-26 10:22 1345定制你自己的桌面--- lau ... -
[转]下载并编译Android 2.3源码
2011-01-22 13:29 5544原文http://www.blogjava.net/TiGER ... -
Launcher研究之AndroidManifest.xml[转]
2010-12-14 09:22 2636分析Launcher的AndroidManifest.xml文 ... -
让你自己写的Android的Launcher成为系统中第一个启动的,也是唯一的Launcher(转载)
2010-12-13 22:19 1090如果你要定制一个Android系统,你想用你自己的Launch ... -
为Android加入busybox工具
2010-12-13 17:32 1730我们可以通过两种方式进入Android的console: 1 ... -
Android源码编译后
2010-12-13 00:08 3254在out/target/product/generic下生成的 ...
相关推荐
详细介绍了64位ubuntu系统如何搭建android编译环境
### Ubuntu Server 10.0.4 安装详尽指南 #### 核心知识点解析 **1. 安装前准备与环境设置** - **介质准备**:使用Ubuntu Server 10.0.4安装光盘或USB设备。 - **BIOS设置**:确保计算机的BIOS设置为从光驱或USB...
Ubuntu 10.04 LTS,全称Lucid Lynx,是Ubuntu操作系统的一个重要发布版本,于2010年4月29日正式推出。LTS代表“长期支持”(Long Term Support),意味着这个版本将得到更长时间的技术支持,对于个人用户和企业用户...
Ubuntu Server 10.0.4 安装过程详解 通过本文档,我们将详细介绍 Ubuntu Server 10.0.4 的安装过程,涵盖了从引导安装到完成基本系统安装的所有步骤。 语言选择 在安装过程的第一步,我们需要选择语言,选择“中文...
在本文中,我们将深入探讨VMware VMRC 10.0.4-11818843 for Windows这个版本,以及它在IT领域的应用和重要性。 VMware VMRC 10.0.4是VMware Remote Console的一个更新版本,其版本号11818843表明了这次更新的具体...
VMware Remote Console 10.0.4 for Windows 目前最新的版本10.0.4-11818843
VMware Remote Console 10.0.4 for Windows VMware Remote Console provides console access and client device connection to VMs on a remote host. You will need to download this installer before you can ...
DbVisualizer V10.0.4 32位 64位破解文件(包含破解说明)
Dbvisalizer 10.0.4 安装包(64位 + 32位)带破解文件 。
Ubuntu 10.0.4LTS、12.0.4LTS 食谱: 适当的须藤 属性 default['gitreceive']['url'] = 'https://raw.github.com/octohost/octohost/master/bin/gitreceive' default['gitreceive']['path'] = '/usr/bin/...
DbVisualizer V10.0.4 破解文件.zip(含使用教程); 亲测可用。 最新版的破解,
VMware Remote Console 可以实现控制台访问,以及客户端设备与远程主机上的虚拟机之间的连接。您将需要先下载此安装程序,然后才能直接从 VMware ...VMware-Remote-Console-10.0.4-11818843.dmg 发行日期 2019-01-24
PL/SQL Developer是一款由Allround Automations公司开发的专门针对Oracle数据库进行开发和管理的集成开发环境(IDE)。它提供了一个高效、用户友好的界面,用于编写、调试、执行和管理PL/SQL代码。PL/SQL是Oracle...
9. **32位与64位兼容**:提供的两个文件"emed32_10.0.4.exe"和"emeditor.10.0.4.32-64-patch.exe"分别对应32位和64位操作系统,确保在不同环境下都能运行。 10. **界面定制**:用户可以调整字体、颜色、布局,甚至...
这个"apache-tomcat-10.0.4.zip"文件包含了Tomcat的第10个主要版本的第4个小版本,提供了最新的特性、修复和完善。下面我们将深入探讨Tomcat的核心功能、配置、使用以及在开发和生产环境中的应用。 1. **Tomcat概述...
从csdn上下载的一个10.0.4版本,明显与官方的文件指纹不一致,果断从官网下载,虽然费点劲吧,特把官方的校验信息补充如下: VMware Remote Console 10.0.4 for Windows MD5SUM: 4723198ef51f54d258bc03fcbf38eab6 ...
在本例中,使用了三台运行Ubuntu 10.0.4的虚拟机搭建了一个Hadoop分布式集群。集群包括一个NameNode(hadoop1,IP: 192.168.201.104)和两个DataNodes(hadoop2, IP: 192.168.201.54 和 hadoop3, IP: 192.168.201....
1.0.4 ubuntu10.0.4 系统安装