您的位置:首页 > 运维架构 > Linux

linux下载编译android源码

2011-06-28 17:13 459 查看
前言

本文叙述了如何从零开始搭建基于
Google
官方
Android 2.1-r2
源码的开发环境,包括如何下载源代码、编译源代码,以及在模拟器中运行编译生成的镜像。文中开发机是基于
Ubuntu 10.04
的,同样适用于其他版本的
Ubuntu


2. 下载
JDK 1.5

编译
Android
源码需要
JDK1.5
版(主要是需要其中的
javadoc
),
1.6
版是不兼容的。
JDK1.5
已经停止支持,其最终的版本是
JDK 5.0 Update 22


可从
Sun
官网上下载:
http://java.sun.com/javase/downloads/5u22/jdk
选择平台
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.0_22 255
/usr/bin/jdk
是符号链接,它指向
/etc/alternatives/jdk
(由第
2
个参数给出的),
/root/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
环境变量

下面开始配置环境变量。
在终端中执行:
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 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
。在
root
目录下新建一个
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.1-r2,因此加了参数 –b android-2.1_r2:
repo init -u git://android.git.kernel.org/platform/manifest.git –b android-2.1_r2
这中间会问到你的名字和
Email
。如果你打算上传代码,
Email
须是一个
Google
账户。

repo
初始化成功后会看到类似于下面的提示:

repo initialized in /root/mydroid
最后执行
repo sync
开始同步代码。过程比较漫长,下载速度取决于你的网速,中间有可能遇到断线,重新执行
repo sync
即可断点续传。

6. 编译
Android
源代码

6.1 编译生成镜像

切换到
android
源码根目录下,执行
make
即可。首次编译非常耗时,取决于机器配置,大约需要
3
小时。完成后镜像生成在
/root/mydroid/out/target/product/generic
下。

6.2 编译、配置
Android SDK

make
编译完成后,执行
make sdk
命令,生成对应于该版本源代码的
sdk


Android
官方的
SDK
和我们自己编译
Android
源码时使用
make sdk
编译出的
SDK
有区别,模拟器版本不同,加载的默认镜像也不同(一个是官方的,一个是自己编译的)。下面将展示如何能够自由切换
SDK
版本。

首先是自己编译的
SDK
版本,实际位置是
/root/mydroid/out/host/linux-x86/sdk/android-sdk_eng.root_linux-x86


因为它比较常用,我们给它高优先级:
update-alternatives
--install /usr/bin/AndroidSDK AndroidSDK
/root/mydroid/out/host/linux-x86/sdk/android-sdk_eng.root_linux-x86 255
事先下载的官方
SDK
位置是
/root/android-sdk-linux_86
,执行:

update-alternatives --install /usr/bin/AndroidSDK AndroidSDK /root/android-sdk-linux_86 0
然后使用
update-alternatives --display AndroidSDK
查看当前配置情况:



如果要切换配置,使用
update-alternatives --config AndroidSDK



配置
AndroidSDK
环境变量。终端中执行
gedit ~/.bashrc

在文件最后添加下面三行:
# set android environment
export ANDROID_SDK_HOME=/usr/bin/AndroidSDK
export PATH=$ANDROID_SDK_HOME/tools:$PATH
保存文件。在终端中执行
source ~/.bashrc

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: