一、获取Android源代码
(以下安装文件如果不存在,建议更换/etc/source.list中的源)
sudo apt-get install git-core curl
这条命令会从互联网的软件仓库中安装git-core和curl。
其中curl是一个利用URL语法在命令行方式下工作的文件传输工具,它支持很多协议,包括FTP、FTPS、HTTP、HTTPS、TELENT等,我们需要安装它从网络上获取Repo脚本文件。
curl http://android.git.kernel.org/repo >~/bin/repo
这句命令会下载repo脚本文件到当前主目录的/bin目录下,并保存在文件repo中。
最后我们需要给repo文件可执行权限
chmod a+x ~/bin/repo
接下来我们就可以利用repo脚本和Git、curl软件获取Android的源代码了:)
首先建一个目录,比如~/android,进入~/android目录
然后使用下面命令获取源码:
repo init –u git://android.git.kernel.org/platform/manifest.git
这个过程会持续大概1个小时左右或者更短,下载完毕后会看到repo initialized in ***/android这样的提示。
这时,通过ls -al 命令可以看到一些隐藏文件。
本文直接使用
repo sync
命令直接同步全部项目到本地。
这个过程用时较长,因为我是无人值守操作的,时间长短视网络速度而定。
二、源码编译
全部同步完毕后,进入到Android目录下,使用make命令编译,你会发现出现错误。
具体错误提示,依据你已安装的Ubuntu下的开发环境而定。
依次安装如下软件,如果已经安装,它会自动跳过。
sudo apt-get install zlib1g-dev
sudo apt-get install flex
sudo apt-get install bison
sudo apt-get install gperf
sudo apt-get install libsdl-dev
sudo apt-get install libesd0-dev
sudo apt-get install libncurses5-dev
sudo apt-get install libx11-dev
以上软件全部安装完毕后,运行make命令再次编译Android源码。
如果你本机上没有安装JDK,make时依然会报错。
可以从sun官方网站下载jdk-6u16-linux-i586.bin文件并安装它,但由于当天从sun网站下载过慢,我使用了“新得立”的软件安装工具,安装了default-jdk来代替。
配置JAVA_HOME和PATH环境变量,这里我将其全部添加在/etc/profile中尾部,然后source /etc/profile,如下:
JAVA_HOME=/usr/local/src/jdk_XXX
PATH=$PATH:$JAVA_HOME/bin:/usr/local/src/android-sdk-linux_x86-XXX/tools:~/bin
可以通过echo $JAVA_HOME 和echo $PATH进行测试,使用java -version得到提示,参照如下则成功:
java version "XXXX"
Java(TM) SE Runtime Environment (build XXX)
Java HotSpot(TM) Client VM (build XXX, mixed mode, sharing)
以上解决后,用make编译完整个项目后:
(如果你make的目录为~/android的话) 在 ./out/target/product/generic/下,会有几个需要的镜像文件,如下:
system.img
ramdisk.img
userdata.img
三、源码运行
在编译完整个项目后,如果我们需要观看编译后的运行效果,那么就需要在系统中安装模拟器android-sdk-linux_x86-XXX,这个SDK的下载地址为(可能以后会改变,只是提供参考):
http://developer.android.com/sdk/index.html (又被墙了,打不开,windows、linux、mac都在这)
本人解压到/usr/local/src/下,把/usr/local/src/android-sdk-linux_x86-XXX/tools目录加入系统变量PATH中。
同时,添加PATH
PATH=$PATH:$HOME/android/out/host/linux-x86/bin
my $HOME is /home/xxx/
接下来我们需要把android的镜像文件加载到emulator中,使得emulator可以看到android运行的实际效果,需要添加系统变量ANDROID_PRODUCT_OUT:
ANDROID_PRODUCT_OUT=$HOME/android/out/target/product/generic
export ANDROID_PRODUCT_OUT
然后source it。
下面就可以进入到模拟器目录中并启动模拟器
cd $HOME/android/out/target/product/generic
emulator -image system.img -data userdata.img -ramdisk ramdisk.img
本人使用VMBOX虚拟机,Ubuntu 11.04,16GB虚拟硬盘,512MB内存分配。
宿主机配置 2GB内存,2,33GHz Intel Core2 Duo CPU
参考: 优快云