Ubuntu上编译Android过程
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的版本,理论上应该越高越好吧。
然后,就用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 "[email=xxxxx@xxxxxxx]xxxxx@xxxxxxx[/email]"
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:undefinedreference '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的编译脚本才可以。具体的操作,就不在这里罗嗦了。