您的位置:首页 > 移动开发 > Android开发

在 Ubuntu 8.10环境下编译 Android 2.2

2010-08-23 17:44 363 查看
网上有很多相关的文章,这里把自己编译的过程再整理一下,同时指出一些关键点。

 

1. 编译环境配置

 

详细的准备可以参考

http://www.cnmsdn.com/html/201002/1267161395ID988.html

http://www.eoeandroid.com/thread-3134-1-1.html

 

个人觉得最关键的是 java环境 和 64位问题。

 

Java 环境

 

Android2.2及之前的版本,都依赖 Java5, 不知道在未来的Android3.0上,是否会升级成java6。

安装Java5,只需执行如下命令

sudo apt-get install sun-java5-jdk

也许你的机器已经安装了Java, 可用下面的命令检查Java版本

update-java-alternatives -l

我机器的输出为:

java-1.5.0-sun 53 /usr/lib/jvm/java-1.5.0-sun

java-6-cacao 1059 /usr/lib/jvm/java-6-cacao

java-6-openjdk 1061 /usr/lib/jvm/java-6-openjdk

java-6-sun 63 /usr/lib/jvm/java-6-sun

java-gcj 1042 /usr/lib/jvm/java-gcj

也就是说,Java5和Java6都安装了,如何设置缺省的版本呢?用

update-java-alternatives –s 命令。

譬如,设置java5为缺省版本:

update-java-alternatives –s

java-1.5.0-sun

设置java6为缺省版本:

update-java-alternatives –s

java-6-sun

网上提到,除了用以上命令设置外,还需要设定环境变量JAVA_HOME,以指定Java的路径(网上也有人说不需要设置JAVA_HOME,这点我不是很确定,也没有进行严格的测试)

编辑您的用户主目录下的.bashrc文件

,在结尾部分增加以下内容:

export JAVA_HOME=/usr/lib/jvm/

java-1.5.0-sun

或者

export JAVA_HOME=/usr/lib/jvm/

java-6-sun

前者是针对Java5环境,后者是针对Java6环境

安装并配置好Java后,你可以用以下命令来检测当前的Java版本

java -version

输出类似下面的信息:

java version "1.5.0_19"

Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_19-b02)

Java HotSpot(TM) Server VM (build 1.5.0_19-b02, mixed mode)

 

如果没有安装Java5,那么编译会出现下面的错误

Docs droiddoc: out/target/common/docs/api-stubs

Could not load 'clearsilver-jni'

java.library.path = out/host/linux-x86/lib

make: *** [out/target/common/docs/api-stubs-timestamp] 错误 45

 

如果你刚开始编译的时候用的是Java6,编译到中途,出现上面的错误,然后你重新安装并设置成Java5,再重新执行make, 上面的问题仍然存在。解决的办法是:先make clean,然后重新make。

64位问题

该问题可以参考 http://www.poemcode.net/2010/07/android-stubs-64/
在编译过程中,有可能会出现这样的错误:

/usr/include/gnu/stubs.h:9:27: error: gnu/stubs-64.h: No such file or directory

解决办法

sudo apt-get install lib64z1-dev libc6-dev-amd64 g++-multilib lib64stdc++6

其它问题

如果在编译过程中,发现少什么库,编译脚本会给出详细的信息,根据这些信息,你就知道那些库需要安装。

2. 代码编译

进入android代码树, 执行根目录下的make

该过程很长,可能要2,3个小时

3. 生成文件

编译生成的中间文件,及最终的目标文件都在out目录下

对我们比较有用的:

out/host/linux-x86/bin   该目录下存放Android工具链,如:adb, emulator, ...

out/target/product/generic 该目录下存放最终可运行的镜像文件:ramdisk.img, system.img, userdata.img, 以及它们对应

的目录树:root, system, data。

4.在emulator里面运行镜像文件

emulator -system system.img -ramdisk ramdisk.img -data userdata.img

如果能正常运行,那么恭喜你!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息