全部博文(2005)
分类: LINUX
2010-11-30 23:13:27
应一个在电信做android开发的哥们要求,帮忙把Goole未在sdk中打包的API(即:mms彩信功能),打包到自己编译的sdk里面。偶用了差 不多5天+5夜的时间,虽然没有成功。但对于Ubuntu 10.04环境下载&编译Android-2.2.1 (froyo)源代码这个过程是相当熟悉啦,来来回回,在虚拟机里面做了5遍!其中的辛苦与开心只有自己才有深刻的体会。现在分享给大家,同时也感谢网络 上的筒子们。
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,(偶是2010年10月15日做)但很有可能会出现交叉编译工具错误:“ /bin/bash: prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gcc: 没有那个文件或目录 ”(实际上是有arm-eabi-gcc这个文件的,偶怀疑是版本问题--32位的,而环境要求是64位的—-- 下载全部代码)
2. 下载JDK 1.5 (不建议此下载方式,防止配置环境参数出错。建议用apt-get install方式,请跳转到:第4步)
编译Android源码需要JDK1.5版(主要是需要其中的javadoc),1.6版是 不兼容的。JDK1.5已经停止支持,其最 终的版本是JDK 5.0 Update 22。
可从Sun官网上下载:
选择平台Linux,勾选同意许可协议:
单击Continue,在弹出的页面中一共有两个下载,选第一个jdk-1_5_0_22-linux-i586.bin下载:
3. 部署JDK 1.5
3.1 解压缩JDK
以下命令均在root账户上执行,非root账户执行某些命令可能需要加sudo。
将jdk-1_5_0_22-linux-i586.bin放在root目 录下。进入该目录:
cd ~
然后赋予该bin文件可执行属性:
chmod +x jdk-1_5_0_22-linux-i586.bin
再执行安装(注意前面有./):
./jdk-1_5_0_22-linux-i586.bin
跳过协议阅读。
最后一行:
Do you agree to the above license terms? [yes or no]
键入yes,然后回车,开始解压。默认会解压到当前目录下的jdk1.5.0_22目录下(此处是~/ jdk1.5.0_22)。
3.2 JDK版本切换
如果同时需要使用JDK1.6版做应用开发,则系统中将同时存在JDK1.5和JDK1.6。 因此需要实现能够在不同版本间切换。如果不使用JDK1.6,请做完1.5版 的设置后跳至3.3节。
这里使用update-alternatives命令实现。
首先为JDK1.5版生成可选配置选项:
update-alternatives
--install /usr/bin/jdk jdk /root/jdk1.5.22 255
(sudo
update-alternatives --install /usr/bin/jdk jdk /home/ynb/jdk1.5.0_22 255)
/usr/bin/jdk是符号链接,它指 向/etc/alternatives/jdk(由第2个参数 给出的),/root/jdk1.5.22(/home/ynb/jdk1.5.0_22)是 实际目的链接,255是优先级(任意整数, 在automatic mode自动模式 时,数字大的优先级较高,被选为默认配置选项)。
然后再为JDK1.6版生成(如果有JDK1.6的话。不使用JDK1.6的请跳至3.3节):
update-alternatives --install /usr/bin/jdk jdk /root/jdk1.6.20 0
这样,默认jdk版本即为1.5版。 需要切换到1.6版时,请使用update-alternatives –config jdk
3.3 配置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是否 配置正确。
4.用apt-get install方式安装JDK1.5:
Android 要求的 jdk 1.5,而Ubuntu10.4的源里只有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
安装jdk1.5目前网上解决方法有两种:
解决方法一(建议): 安装JDK1.5
1) 根据官方文档里所说,源代码的编译必须使用JDK5才能编译的了,所以这里偶使用jdk5
2) 需要先更新源,在终端里执行 sudo
vim /etc/apt/sources.list
3) 在source.list里把以下2行拷贝到文档最后面:
deb jaunty multiverse
deb-src jaunty multiverse
deb jaunty-updates multiverse
deb-src
jaunty-updates multiverse
保存退出。
其实对于我们china地区来说,使用如下源(ubuntu 8.04 LTS)会更快[luther.gliethttp]
deb hardy multiverse
deb-src hardy multiverse
deb hardy-updates multiverse
deb-src hardy-updates multiverse
《在ubuntu 10.04中多个可执行应用程序jdk1.6默认路径改为默认使用dk1.5即java5》
4) 执行 sudo
apt-get update 更新源.
5) 配置编译环境并下载JDK5:sudo apt-get
install sun-java5-jdk
解决方法二: 安装JDK 1.6 , 修改Android源文件。
1) 安装jdk 1.6,修改
java_version := $(shell java -version 2>&1 | head -n 1 | grep '[
"]1.5[. "$$]')
javac_version := $(shell javac -version 2>&1 | head -n 1 | grep '[
"]1.5[. "$$]')
两行改成:
java_version := $(shell java -version 2>&1 | head -n 1 | grep '[
"]1.6[. "$$]')
javac_version := $(shell javac -version 2>&1 | head -n 1 | grep '[
"]1.6[. "$$]')
即可。
推荐使用第一种解决方法。
5. 安装其他必备组件
在终端上,使用下面的命令安装:(前面的1、2、3步骤都可以省略啦)
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。
chinaunix网友2010-12-01 15:09:54
很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com