浏览 27513 次
锁定老帖子 主题:Ubuntu下android源码下载与编译
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2012-04-15
Note: It is also possible to build Android in a virtual machine. If you are running Linux in a virtual machine, you will need at least 16GB of RAM/swap and 30GB or more of disk space in order to build the Android tree.(如果用虚拟机,要保证16G的swap空间和30G的硬盘空间) 一、获取Android源代码 因为Android是由Kernel、Dalvik、Bionic、Prebuilt、build等多个项目组成,如果我们分别使用Git来逐个获取显得很麻烦, 所以Android项目编写了一个名为Repo的Python的脚本来统一管理这些项目的仓库,repo用Python脚本写的调用git的一个脚本,主要功能是下载、管理Android项目的软件仓库。使得项目的获取更加简单。在Ubuntu 8.04上安装Git只需要设定正确的更新源,然后使用apt-get就可以了,apt-get是一条Linux命令,主要用于自动从互联网的软件仓库中搜索、安装、升级、卸载软件或操作系统。 1、安装git和curl 进入Linux ,打开终端,在终端窗口敲下面的命令: sudo apt-get install git-core curl 2、安装repo脚本 首先安装repo。在当前用户:~目录下新建一个bin目录。在终端中执行: cd ~ mkdir bin 然后,向PATH中添加bin路径: export PATH=$PATH:~/bin 然后执行下面两行指令,下载repo脚本并修改可执行属性: curl https://android.git.kernel.org/repo>~/bin/repo 是通过cURL来下载Repo脚本,保存到~/bin/repo文件中 chmod a+x ~/bin/repo 给~/bin/repo赋给repo执行权限 3、初始化repo 首先建立一个目录用来存放Android源代码: mkdir mydroid cd mydroid repo init -u git://android.git.kernel.org/platform/manifest.git 把Android当前主线上最新版本的所有的sourcecode拿下来 如果想拿某个branch而不是主线上的代码,我们需要用-b参数制定branch名字,比如: repo init -u git://android.git.kernel.org/platform/manifest.git -b cupcake 4、同步版本 使用repo sync命令,就可以把整个Android代码树做同步到本地 能还有经历下载中断的情况,这时只要重新执行repo sync就可以了。 如果是第一次运行 repo sync , 则这个命令相当于 git clone ,会把 repository 中的所有内容都拷贝到本地。 如果不是第一次运行 repo sync , 则相当于 git remote update ; git rebase origin/branch . repo sync 会更新 .repo 下面的文件。 如果在merge 的过程中出现冲突,这需要手动运行 git rebase --continue 二、编译Android源代码 1、安装java jdk6是通过手动解压安装的。先到官方网站下载一个jdk6的安装包,url如下: http://download.oracle.com/otn/java/jdk/1.5.0_22/jdk-1_5_0_22-linux-i586.bin 1)下载完成后即安装 sudo chmod +x jdk-6u30-linux-i586.bin sudo ./jdk-6u30-linux-i586.bin 2)设置java环境 #set java environment export JAVA_HOME=/home/mfcai/jdk1.5.0_22 export JRE_HOME=$JAVA_HOME/jre export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH 3)设置完成后重启 2、编译源码 切换到android源码根目录下,执行$sudo make即可。首次编译非常耗时,取决于机器配置,但这个过程真的很漫长。编译成功后,终端会如下提示: Generated: (out/target/product/generic/android-info.txt) Target system fs image: out/target/product/generic/obj/PACKAGING/systemimage_unopt_intermediates/system.img Install system fs image: out/target/product/generic/system.img Target ram disk: out/target/product/generic/ramdisk.img Target userdata fs image: out/target/product/generic/userdata.img Installed file list: out/target/product/generic/installed-files.txt 完成后镜像生成在/mfcai/mydroid/out/target/product/generic下 编译完成后会生成了一个out 目录,编译成功会会再源码目录下生成一个out文件夹,大小有12G,所有所在的挂载区剩余空间最好大于20G。 主要的两个目录为host 和target 1)前者表示在主机(x86)生成的工具 2)后者表示目标机(模认为ARMv5)运行的内容。 镜像文件生成在/home/mfcai/mydroid/out/target/product/generic下:android源码编译后得到system.img,ramdisk.img,userdata.img映像文件。其中, ramdisk.img是emulator的文件系统,system.img包括了主要的包、库等文件,userdata.img包括了一些用户数据,emulator加载这3个映像文件后, 会把system和userdata分别加载到ramdisk文件系统中的system和userdata目录下 make编译的并不是所有内容,不包含内核和SDK。 三、编译、配置Android SDK make PRODUCT-sdk-sdk 编译完成后会在/home/mfcai/mydroid/out/host/linux-x86/sdk/目录生成sdk 问题1 有可能会出现:“Permission denied (权限拒绝的提示)”异常。 请命令 解决办法:赋予权限 $sudo chmod -R a+rwx * 四、运行android模拟器 1、在 ~/.bashrc 加环境变量。 gedit ~/.bashrc 打开.bashrc,在.bashrc文件的最后面加入如下3行(Android工具的路径) export PATH=/home/mfcai/myandroid/out/host/linux-x86/bin :$PATH export ANDROID_PRODUCT_OUT=/archer/external/android/out/target/product/generic export ANDROID_SWT=/android/out/host/linux-x86/framework 2.创建Android虚拟设备 ./android create avd -t 15 -n g15 -t 指定TargetID (Android 4.0.3 SDK的ID为15),-n指定创建的Android虚拟设备名字。 3.运行emulator ./emulator -avd g15 进入模拟器程序所在目录,我的模拟器所在目录是:/home/mfcai/myandroid/out/host/linux-x86/bin cd ~/myandroid/out/host/linux-x86/bin 使用android list targets命令来查看当前系统中的android模拟器, ./android list target 问题1: 有可能会出现如下异常:SWT folder '/root/dsk/android/out/host/linux-x86/framework/x86' does not exist. Please export ANDROID_SWT to point to the folder containing swt.jar for your platform. 意思是需要指向SWT.jar所在的目录。 解决办法:在.bashrc文件中加入下面一行: export ANDROID_SWT=/home/mfcai/icecreamsu/out/host/linux-x86/framework 转载请注明出处与作者。 欢迎访问http://blog.sina.com.cn/staratsky 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2012-05-14
闷声大马克,楼主写的不错。有时间看一下,话说楼主知道ARM9的板子能跑android系统么?我这有一个ARM9的板子,想试试,是不是把系统编译的更简单点就可以了呢?
|
|
返回顶楼 | |