Android Platform的编译方法

(文章出处:http://blog.chinaunix.net/u/26691/showart_1348753.html)

 

北京理工大学  20981  陈罡
10月22日,这是有纪念意义的一天,因为google公司在那一天总算开放了整个android platform的源代码,总算可以不用在那个java的虚拟机里面自娱自乐了。总想写点什么庆祝一下,又觉得过于苍白,于是抽时间来真刀真枪的试一遍看 看到底google有没有“忽悠”我们 :P
 
android的源代码下载的官方网站是: http://source.android.com
源代码的下载说明页面是: http://source.android.com/download
 
其实英文好的朋友大可不必看偶在此罗嗦,直接follow google的说明就行了,一切都很简单。
 
下面就把android platform在slackware 12.0上面的下载、编译过程汇总一下:
 
(1)当然了,需要安装slackware 12.0或者更高版本的linux发行版,直接选择“full”模式,完全安装。
 
(2)确认环境是否达到了要求,你可以在linux下面建立一个账户,然后在账户的目录下面查看是否满足如下的要求:
a)git (1.5.4或者以上版本,slackware 12.0本身就是1.5.5的)
b)python (2.4或者以上的版本,slackware 12.0本身应该是2.5的)
c)jdk5.0以上的版本,这个slackware 12.0没有,slackware只有java的运行环境而已,于是登录:
http://java.sun.com/javase/downloads
下载一个即可,我下载的是jdk5.0 update 10的版本,理论上应该越高越好吧。
(编者注:只是理论上而已,如果认真看Android官网上的介绍,到目前为止Android的编译还只是支持JDK5.0而不支持JDK6,望后来者注意)
然后,就用chmod a+x jdkxxxxxxx.bin,然后运行,安装到你的机器上即可。
(注:当然了,也可以直接su成root把安装包弄到/usr/local目录下面去)
 
然后有一个网络方面的设置需要注意,运行如下程序:
/usr/local/jdk-xxxxxxx/bin/ControlPanel
选择在network里面选择setting,然后把连接类型设置为Direct Connection。
 
(3)创建工作目录,进入工作目录,创建bin目录:
mkdir ~/works
mkdir ~/works/android_dev
cd ~/works/android_dev
mkdir bin
 
(4)下载安装repo版本管理工具
curl http://android.git.kernel.org/repo > ~/works/android_dev/bin/repo
cd bin
chmod a+x repo
 
(5)开始准备下载android
cd ~/works/android_dev
./bin/repo init -u git://android.git.kernel.org/platform/manifest.git
通常情况下会出现error提示(如果是以前没有创建过repo账户的话),这个不要紧,忽略掉它好了。
 
(6)配置repo账户
git config --global user.email " xxxxx@xxxxxxx "
git config --global user.name "xxxxxx"
 
(7)开始下载android platform的源代码
repo sync
这个操作会持续一段时间,看网速了;google上面说的源代码占用2.1G的硬盘空间,但似乎没有那么大,只有900M左右。
 
(8)好了,现在准备一下环境变量
最好在.bashrc或者在/etc/profile文件中添加环境变量定义:
export ANDROID_JAVA_HOME=$JAVA_HOME
需要logout,再login一下,然后用:
echo $ANDROID_JAVA_HOME
命令来确认一下环境变量是否已经生效
 
(9)修改一个小“bug”
理论上在ubuntu上面可以直接开始编译了,但是在slackware上似乎还需要手工修改一个编译脚本上的bug,找到如下文件:
~/works/android_dev/external/sqlite/dist/Android.mk
找到下面这一行:
 

ifneq ( $ ( strip $ ( have_readline) ) , )
LOCAL_LDLIBS + = - lreadline
endif

这里只有一个-lreadline,对于slackware来说就不够了,编译的时候会出现libreadline.so:undefined reference 'PC'之类的错误。修正的方法很简单,就是直接在这一句的后面加上-lncurses,改正后应该是这个样子的:

LOCAL_LDLIBS += -lreadline -lncurses

好了,然后就可以开始放手编译了。

(10)编译

make

好了,然后就可以出去晃晃,喝杯咖啡了(足够你喝很多很多杯的咖啡)。

编译完毕以后,会发现在代码目录下多了一个目录:

~/works/android_dev/out

这就是生成的结果了,此时不要着急,需要先再设置一下环境变量方法同(8):

export ANDROID_PRODUCT_OUT=/home/wayne/works/android_dev/out/target/product/generic

设置完了以后,需要logout,再login一次才可以喔,更新环境变量。

(11)开始验证生成的结果

进入android_dev/out/host/bin/目录下,然后运行:

emulator --debug-init -skin QVGA-L [回车]

应该看到以下的画面(第一次开启的时候,应该还有一个向google反馈的一个对话框,按下确定即可):

到了这一步,恭喜恭喜!呵呵,基本上已经编译通过了,要想编译成arm板子上可以跑的版本还需要进一步修嘎android的编译脚本才可以。具体的操作,就不在这里罗嗦了。

最后,实验一下android的浏览器,这可是传说中的Webkit啊!感觉不错。

你可能感兴趣的:(Android Platform的编译方法)