您的位置 首页 模拟

Ubuntu 8.04下编译Android源码全过程

一、获取Android源代码Git是Linux Torvalds(Linux之父)为了帮助管理Linux内核开发而开发的一个开放源码的分布式版本控制软件,它不同于Subversion、CVS这样的集

一、获取Android源代码

Git是Linux Torvalds(Linux之父)为了协助办理Linux内核开发而开发的一个开放源码的分布式版别操控软件,它不同于Subversion、CVS这样的集中式版别操控体系。在集中式版别操控体系中只要一个库房(Repository),许多个作业目录(Working Copy),而在Git这样的分布式版别操控体系中(其他首要的分布式版别操控体系还有BitKeeper、Mercurial、GNU Arch、Bazaar、Darcs、SVK、Monotone等),每一个作业目录都包括一个完好库房,它们支撑离线作业,本地提交能够稍后提交到服务器上。

由于Android是由Kernel、Dalvik、Bionic、Prebuilt、build等多个项目组成,假如咱们别离运用Git来逐一获取显得很费事,所以Android项目编写了一个名为Repo的Python的脚原本统一办理这些项目的库房,使得项目的获取愈加简略。

在Ubuntu 8.04上装置Git只需求设定正确的更新源,然后运用apt-get就能够了,apt-get是一条Linux指令,首要用于主动从互联网的软件库房中查找、装置、晋级、卸载软件或操作体系。

apt-get指令一般需求root权限履行,所以一般跟着sudo指令。

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。

然后运用下面指令获取源码:

repo init –u git://android.git.kernel.org/platform/manifest.git

这个进程会继续很长的时刻(笔者下载了一天),下载结束后会看到repo initialized in /android这样的提示,阐明本地的版别库现已初始化结束,而且包括了当时最新的sourcecode。

假如咱们想拿某个分支版别的代码,而不是主线代码,需求运用-b参数指定branch的姓名,比方:

repo init –u git://android.git.kernel.org/platform/manifest.git –b cupcake

假如咱们仅仅想获取某一个project的代码,比方kernel/common,就不需求repo脚本了,直接运用Git东西即可,假如细心研讨repo脚本会发现,repo脚本其实便是安排Git东西去获取各个Project并把它们安排到同一个项目Android内。

git clone git://android.git.kernel.org/kernel/common.git

咱们上面运用repo脚本获取了各个项目,那么接下来就需求把整个Android代码树同步到本地,如下:

repo sync project1 project2 …

笔者运用repo sync指令直接同步悉数项目到本地。

二、源码编译

悉数同步结束后,进入到Android目录下,运用make指令编译,你会发现呈现如下过错提示:

host C: libneo_cgi = external/clearsilver/cgi/cgi.c

external/clearsilver/cgi/cgi.c:22:18: error: zlib.h: No such file or directory

这个过错是由于咱们短少zlib1g-dev,需求运用apt-get指令从软件库房中装置,如下:

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源码。

这个时分你会发现呈现许多java文件无法编译的过错,翻开Android的源码咱们能够看到在android/dalvik/libcore/dom/src/test/java/org/w3c/domts下有许多java源文件,这意味着编译Android之前需求先装置JDK。

首要从sun官方网站下载jdk-6u16-linux-i586.bin文件并装置它。

在Ubuntu 8.04中,/etc/profile文件是大局的环境变量装备文件,它适用于一切的shell。在咱们登陆Linux体系时,首要发动/etc/profile文件,然后再发动用户目录下的~/.bash_profile、~/.bash_login或~/.profile文件中的其间一个,履行的次序和上面的排序相同。假如~/.bash_profile文件存在的话,一般还会履行~/.bashrc文件。

所以咱们只需求把JDK的目录放到/etc/profile里即可,如下:

JAVA_HOME=/usr/local/src/jdk1.6.0_16

PATH=$PATH:$JAVA_HOME/bin:/usr/local/src/android-sdk-linux_x86-1.1_r1/tools:~/bin

然后重新发动一下机器,输入java –version指令,提示如下信息代表装备成功:

java version 1.6.0_16

Java(TM) SE Runtime Environment (build 1.6.0_16-b01)

Java HotSpot(TM) Client VM (build 14.2-b01, mixed mode, sharing)

在编译完好个项目后,终端会呈现如下提示:

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

root@dfsun2009-desktop:/bin/android#

三、源码运转

在编译完好个项目后,假如咱们需求观看编译后的运转作用,那么就需求在体系中装置模拟器android-sdk-linux_x86-1.1_r1,这个SDK的下载地址为:

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/zhishi/moni/297813.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部