Ubuntu 10.04环境下载&编译Android-2.2.1 (froyo )
- 博客分类:
- 技术杂绘
本文根据下文整理而成: http://mantocom.blog.sohu.com/161174073.html。 1.前言 本文叙述了如何从零开始搭建基于Google官方Android 2.2.1(froyo)源码的开发环境,包括如何下载源代码、编译源代码,以及在模拟器中运行编译生成的镜像。文中开发机是基于Ubuntu 10.04的,同样适用于其他版本的Ubuntu。现在需要弄清楚一下几点,防止后面出现误操作:下载源代码是用参数:repo init -u git://android.git.kernel.org/platform/manifest.git -b froyo(下载的是2.2.1版本,编译环境操作系统必须是32位的,jdk1.5版本的---jdk1.5没有64位版本)。如果是没有带参数的下载源代码,将会下载所有的源代码,编译环境要求:操作系统64位,jdk1.6,但很有可能会出现交叉编译工具错误:" /bin/bash: prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/ar m-eabi-gcc: 没有那个文件或目录"(实际上是有arm-eabi-gcc这个文件的,偶怀疑是版本问题--32位的,而环境要求是64位的--- 下载全部代码)
2.用apt-get install方式安装JDK1.5:
编译Android源码需要JDK1.5版(1.6版是不兼容的,jdk 1.5已经停止支持,其最终的版本是JDK 5.0 Update 22),而Ubuntu10.4会默认安装 openJDK1.6.
2.1 卸载openJDK1.6【可选】
如果同时需要使用JDK1.6版做应用开发,请保留JDK1.6,第3节将讲述在不同jdk版本间切换。如果不需要jdk1.6,可以根据下面的方法卸载JDK1.6:
$sudo apt-get remove remove openjdk-6-jdk
$sudo apt-get remove remove openjdk-6-jre
$sudo apt-get remove remove openjdk-6-jre-headless
2.2安装JDK1.5
1)根据官方文档里所说,源代码的编译必须使用JDK5才能编译的了,所以这里偶使用jdk5
2)需要先更新源,在终端里执行 sudo vim /etc/apt/sources.list
3)在source.list里把以下4行拷贝到文档最后面:
deb http://us.archive.ubuntu.com/ubuntu/ jaunty multiverse
deb-src http://us.archive.ubuntu.com/ubuntu/ jaunty multiverse
deb http://us.archive.ubuntu.com/ubuntu/ jaunty-updates multiverse
deb-src http://us.archive.ubuntu.com/ubuntu/ jaunty-updates multiverse
保存退出。
4)执行 sudo apt-get update 更新源.
5)配置编译环境并下载JDK5:
sudo apt-get install sun-java5-jdk
6) 配置JDK环境变量
在终端中执行:sudo gedit ~/.bashrc
修改.bashrc文件,添加下面语句:
#set java environment
export JAVA_HOME=/usr/bin/jdk
export JRE_HOME=JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
该段代码最好设置在文件的尾部。
保存文件。在终端中执行source ~/.bashrc
重启系统请使用java version检查JDK是否配置正确。
3. JDK版本切换
如果同时需要使用JDK1.6版做应用开发,则系统中将同时存在JDK1.5和JDK1.6。因此需要实现能够在不同版本间切换。
可以使用update-alternatives命令实现。
$sudo update-alternatives -config java
请使用java version检查JDK是否配置正确。
4. 安装其他必备组件
在终端上,使用下面的命令安装:
sudo apt-get install git-core gnupg flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev
因为JDK1.5在前面已经单独安装过了,因此此处apt-get install命令行中没有加入sun-java5-jdk。
5. 下载Android 源代码
5.1 安装repo脚本
首先安装repo。在当前用户:~目录下新建一个bin目录。在终端中执行:
cd ~
mkdir bin
然后,向PATH中添加bin路径:
export PATH=$PATH:~/bin
然后执行下面两行指令,下载repo脚本并修改可执行属性:
curl https://android.git.kernel.org/repo >~/bin/repo
chmod a+x ~/bin/repo
5.2 初始化repo
首先建立一个目录用来存放Android源代码:
mkdir mydroid
cd mydroid
然后用最新的列表执行初始化。这里偶下载android 2.2.1(froyo),因此加了参数 b froyo:(android 2.2.2(froyo)源码下载:2.1G多
repo init -u git://android.git.kernel.org/platform/manifest.git-b froyo )
(下载2.1_r2源码
repo init -u git://android.git.kernel.org/platform/manifest.git b android-2.1_r2
下载全部源码:repo init -u git://android.git.kernel.org/platform/manifest.git )
(如果能通过浏览器浏览到android源码的主页,但运行repo init或repo sync的时候,却没法下载源码,形如:
只需要把git开头的地址改为http即可:
方法[1]repo init -u http://android.git.kernel.org/platform/manifest.git -b froyo
方法[2]修改manifest.git里的地址,也是把git://改为http://
vim .repo/manifest.git
如:
)
这中间会问到你的名字和Email。如果你打算上传代码,Email须是一个Google账户。
repo初始化成功后会看到类似于下面的提示:
repo initialized in /home/(当前用户名)/mydroid
最后执行$repo sync开始同步代码。过程比较漫长,下载速度取决于你的网速(偶的3-4小时左右),中间有可能遇到断线,重新执行repo sync即可断点续传。
6. 编译Android源代码
6.1 编译生成镜像
切换到android源码根目录下,执行$sudo make即可。 如果执行$sudo make时提示下列错误:
Your version is: java version "1.6.0_18".
The correct version is: 1.5.
则使用下面的方法解决
执行$sudo update-alternatives -config java
然后选择java1.5作为默认版本。如果还出现类似错误的话,则请用javac, javadoc, javah等代替上面的java,例如
$sudo update-alternatives -config javac
$sudo update-alternatives -config javadoc
$sudo update-alternatives -config javah
首次编译非常耗时,取决于机器配置,大约需要2-3小时。有可能会出现:"Permission denied(权限拒绝的提示)"请命令赋予权限:$cd 无权限文件的当前目录回车; $sudo chmod -R +rwx * 回车;完成后镜像生成在/root/mydroid/out/target/product/generic下:android源码编译后得到system.img,ramdisk.img,userdata.img映像文件。其中, ramdisk.img是emulator的文件系统,system.img包括了主要的包、库等文件,userdata.img包括了一些用户数据,emulator加载这3个映像文件后,会把 system和 userdata分别加载到 ramdisk文件系统中的system和 userdata目录下。
6.2 编译、配置Android SDK
make编译完成后,执行$sudo make sdk命令,生成对应于该版本源代码的sdk,此过程用的时间偶的是10多分钟。注意这个sdk不能用于生产环境。
用于生产环境的最好用如下命令:$sudo make PRODUCT-sdk-sdk命令,生成对应于该版本源代码的用于生产环境的sdk,此过程用的时间偶的是1个多小时。
Android官方的SDK和偶自己编译Android源码时使用make sdk编译出的SDK有区别,模拟器版本不同,加载的默认镜像也不同(一个是官方的,一个是自己编译的)。下面将展示如何能够自由切换SDK版本。
首先是自己编译的SDK版本,实际位置是(注意权限: $cd ~/mydroid/out/host/linux-x86/sdk回车,$ sudo chmod -R a+wrx * 回车 )
~/mydroid/out/host/linux-x86/sdk/android-sdk_eng.r oot_linux-x86。
7. 在模拟器中运行编译的镜像
打开终端,执行android脚本:
$android
出现下图所示窗口:
选择左边第一项Virtual Devices,然后在右边选择New,新建一个AVD。
Name:AVD的名称,随便取,但只能包含字母和数字以及点、下划线和连字符,这里取名test。
Traget:目标SDK版本,这里选自己编译的2.1-r1版Android SDK。
SD Card:SD卡。暂且不填,待需要时再设置。
Skin:皮肤(模拟器屏幕分辨率)。
Hardware:使用默认即可
然后点Create AVD,就创建好了一个AVD。点击Start即可启动模拟器,其运行的是自己编译的镜像。
若以后要再次启动此AVD,请在终端中运行:
emulator avd test 或者emulator @test
发表评论
-
GDI中获取字符串精确绘制范围的两种做法比较
2012-07-06 09:52 654作者:朱金灿 ... -
使用正则表达式处理邮件模板中的参数
2012-07-06 09:45 653软件开发过程中,经常使用JavaMail给用户发送邮件;大 ... -
正则表达式 cscope emacs svn putty emacs
2012-07-06 09:38 770我一懒人,图自己方便。要是路过的朋友们用上了的话,请给懒人 ... -
C# winform 启动画面支持多种 framework
2012-07-06 09:30 898using System; using System.Co ... -
18位身份证验证代码
2012-07-05 20:45 799首先php版本的: /** * 身份证 * * @para ... -
在Flex组件上显示手型的鼠标
2012-07-03 13:44 668在Flex组件上显示手型的鼠标 有些时候,我们需要 ... -
Flex学习笔记
2012-07-02 12:46 559类成员有四种修饰 ... -
关于Firefox重新加载flex的问题解决
2012-07-02 12:46 832DIV中有一个flex,我希望用js来控制它的显示和隐藏, ... -
flex取数据1
2012-07-02 12:45 532HTML通过JavaScript传递信息到Flex中 ... -
Pivot升级为Apache顶级项目,准备好挑战Flex, Silverlight和JavaFX
2012-07-02 12:45 612Apache软件基金会(ASF)于昨天宣布,将Pivot ... -
Flex控制对主机网页中脚本的访问
2012-07-02 12:45 513通过使用以下 ActionScript 3.0 API 可 ... -
视频聊天网站的研究、发展以及趋势(转)
2012-07-01 10:07 518此文讲述了视频聊 ... -
转载:WebKit介绍及总结(三)
2012-07-01 10:07 673六 . 编译与调试 在 ubuntu-10.04 上 ... -
ExtJS 4 Grid组件
2012-07-01 10:07 610我们正 ... -
[转载]flex开源框架汇总-leo_wlcnblogs-博客园
2012-06-30 16:34 688[转载]flex开源框架汇总-leo_wlcnblogs-博客 ... -
【FLEX学习】第五天
2012-06-30 16:34 572【FLEX学习】第五天 2011年02月17日 1.细化 ... -
使用Flex和Actionscript开发Flash游戏―(八)
2012-06-30 16:34 499使用Flex和Actionscript开发Flash游戏―(八 ... -
使用Flex3.0 AIR 创建“不规则形状”的Air透明窗体
2012-06-30 16:34 560使用Flex3.0 AIR 创建“不规则形状”的Air透明窗体 ... -
ria big bang = {flash/air/flex .vs. html5}_chriswang
2012-06-30 16:34 605ria big bang = {flash/air/flex ...
相关推荐
Ubuntu10.04编译安装最新版本Linux-2.6.34内核教程
Ubuntu10.04下安装ns-allinone-2.35
ubuntu-10.04-desktop-amd64.iso.torrent, Ubuntu Lucid amd64位下载种子
在Ubuntu10.04建立QT-linux-embedded-4.6.3开发环境及编译qvfb
android2.2源码编译-Ubuntu10.04 (X86) + android2.2 + JDK1.6android2.2源码编译-Ubuntu10.04 (X86) + android2.2 + JDK1.6android2.2源码编译-Ubuntu10.04 (X86) + android2.2 + JDK1.6
在Ubuntu10.04下载和编译android 4.0源代码(四)
在Ubuntu10.04下载和编译android 4.0源代码(三)
自己总结用crosstool构建交叉编译工具 arm-linux-gcc 4.1.0
ubuntu10.04及12.04编译android环境搭建.txt
ubuntu-10.04.4-desktop-i386.iso
在Ubuntu10.04下载和编译android 4.0源代码(一)
在Ubuntu10.04下载和编译android 4.0源代码(五)
在Ubuntu10.04下载和编译android 4.0源代码(一)
Ubuntu 10.04下Android编译环境搭建
ubuntu10.04安装交叉编译器arm-linux-gcc-4.3.2.pdf
Ubuntu 10.04搭建Scratchbox交叉编译环境.docx
ubuntu 10.04下编译Android源码技术文档 教你怎么编译
本人在NS2上还属于菜鸟级别,几经周折终于在电脑上装好双系统,并在Ubuntu 10.04下装ns-allinone-2.30成功!把经验贴过来供大家分享!
ubuntu10.04界面汉化安装包,deb格式。由于包的相互依赖,需用如下命令安装: #dpkg -i language-pack-zh-hans_1%3a10.04+20100421_all.deb language-pack-zh-hans-base_1%3a10.04+20100421_all.deb language-pack-...
Ubuntu_10.04运用crosstool-ng-1.9.0建立arm-linux交叉工具链