ANDROID编译
- 格式:pdf
- 大小:172.60 KB
- 文档页数:7
用虚拟机来创建一个Ubuntu环境,在这里虚拟机用的是VMware,Ubuntu选择的是10.04版本,Android下载的是4.0.3编译时要确保系统的内存在1.2GM以上,且有足够的硬盘可用空间,否则会编译失败终止。
Android官方提示: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 least16GB of RAM/swap and30GB 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项目的软件仓库。
使得项目的获取更加简单。
在Ubuntu8.04上安装Git只需要设定正确的更新源,然后使用apt-get就可以了,apt-get是一条Linux命令,主要用于自动从互联网的软件仓库中搜索、安装、升级、卸载软件或操作系统。
1、安装git和curl进入Linux,打开终端,在终端窗口敲下面的命令:sudo apt-get install git-core curl2、安装repo脚本首先安装repo。
在当前用户:~目录下新建一个bin目录。
在终端中执行:cd~mkdir bin然后,向PATH中添加bin路径:export PATH=$PATH:~/bin然后执行下面两行指令,下载repo脚本并修改可执行属性:curl https:///repo>~/bin/repo是通过cURL来下载Repo脚本,保存到~/bin/repo文件中chmod a+x~/bin/repo给~/bin/repo赋给repo执行权限3、初始化repo首先建立一个目录用来存放Android源代码:mkdir mydroidcd mydroidrepo init-u git:///platform/manifest.git把Android当前主线上最新版本的所有的sourcecode拿下来如果想拿某个branch而不是主线上的代码,我们需要用-b参数制定branch名字,比如:repo init-u git:///platform/manifest.git-b cupcake4、同步版本使用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、安装javajdk6是通过手动解压安装的。
先到官方网站下载一个jdk6的安装包,url如下:/otn/java/jdk/1.5.0_22/jdk-1_5_0_22-linux-i586.bin1)下载完成后即安装sudo chmod+x jdk-6u30-linux-i586.binsudo./jdk-6u30-linux-i586.bin2)设置java环境#set java environmentexport JAVA_HOME=/home/mfcai/jdk1.5.0_22export JRE_HOME=$JAVA_HOME/jreexport CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATHexport PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH3)设置完成后重启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.i mgInstall system fs image:out/target/product/generic/system.imgTarget ram disk:out/target/product/generic/ramdisk.imgTarget userdata fs image:out/target/product/generic/userdata.imgInstalled file list:out/target/product/generic/installed-files.txt完成后镜像生成在/mfcai/mydroid/out/target/product/generic下编译完成后会生成了一个out目录,编译成功会会再源码目录下生成一个out文件夹,大小有12G,所有所在的挂载区剩余空间最好大于20G。
主要的两个目录为host和target1)前者表示在主机(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 SDKmake 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:$PATHexport ANDROID_PRODUCT_OUT=/archer/external/android/out/target/product/genericexport ANDROID_SWT=/android/out/host/linux-x86/framework2.创建Android虚拟设备./android create avd-t15-n g15-t指定TargetID(Android4.0.3SDK的ID为15),-n指定创建的Android虚拟设备名字。
3.运行emulator./emulator-avd g15进入模拟器程序所在目录,我的模拟器所在目录是:/home/mfcai/myandroid/out/host/linux-x86/bincd~/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方法二Android源代码编译过程2010-12-2216:01536人阅读评论(0)收藏举报前几天安装了Ubuntu10.1064位server版本,主要就是为了编译Android系统用的。
昨天下班时,开始顺利编译,今天早上上班后,发现编译完成。
然后下载Android SDK,用emulator加载编译后的内核,成功。
现在将整个过程总结一下,以便以后参考。
准备阶段:安装Ubuntu Linux。
1.安装git与curl:sudo apt-get install git-coresudo apt-get install curl2.用curl取repo脚本curl /repo>/usr/bin/repo根据自己的网络,可能需要设置代理才可以访问repo。
3.修改repo权限,让repo有运行权限chmod+x/usr/bin/repo4.建立一个目录/home/android5.到android目录下,取主干源代码manifest文件repo init-u git:///platform/manifest.git如果想取某个项目的源代码的manifest文件,用参数-b例如repo init-u git:///platform/manifest.git-b xxxbranch 6.获取源代码repo sync7.安装一些软件sudo apt-get install gunpgsudo apt-get install flexsudo apt-get install bisonsudo apt-get install gperfsudo apt-get install build-essentialsudo apt-get install zlib1g-devsudo apt-get install gcc-multilibsudo apt-get install g++-multilibsudo apt-get install libc6-dev-i386sudo apt-get install lib32ncurses5-devsudo apt-get install ia32-libssudo apt-get install libx11-devsudo apt-get install lib32z-dev8.安装JDK6设置JAVA_HOME与CLASSPATH环境变量9.编译在android目录下,直接make。