Ubuntu10.04下载并编译Android4.3源代码

------------------------------------------------------------------------------------------------------
       此文章仅作为学习交流所用

       转载或引用请务必注明原文地址:

     http://blog.csdn.net/luzhenrong45/article/details/9719433      

  或联系作者:luzhenrong45@gmail.com

       谢谢!                      

------------------------------------------------------------------------------------------------------

 

 去年用Ubuntu10.10成功下载并编译Android4.0了的源代码,见文章《Ubuntu10.10下载并编译Android4.0》

不过,那时候,刚接触Linux和Android不久,基本上都是百度来的教程,所以,对于Android源代码的下载方式和编译过程并没有太多深入的了解,所以现在趁着Android4.3源代码也提供下载了,重新学习一下。

    首先,官方网站对于Android源代码的下载和编译,有极其详尽的介绍,可以此网站自己查阅:  http://source.android.com/source/building.html ,这里,我只想以自己的方式,来记录这个过程。对于过程中遇到的问题,希望自己能够独立解决。


一.安装JDK6

以前已经说过,Ubuntu自带OpenJDK不适合编译Android源代码,所以需要安装sun-jdk,其安装配置方式可参考 《Linux安装配置JDK6》


二.安装Git工具

    Git 是 Linux Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的分布式版本控制软件,可以有效,高速地对项目源代码进行管理。它不同于Subversion、CVS这样的集中式版本控制系统。在集中式版本控制系统中只有一个仓库(repository),许多个工作目录(working copy),而像Git这样的分布式版本控制系统中(其他主要的分布式版本控制系统还有BitKeeper、Mercurial、GNU Arch、Bazaar、Darcs、SVK、Monotone等),每一个工作目录都包含一个完整仓库,它们可以支持离线工作,本地提交可以稍后提交到服务器上。分布式系统理论上也比集中式的单服务器系统更健壮,单服务器系统一旦服务器出现问题整个系统就不能运行了,分布式系统通常不会因为一两个节点而受到影响。

    Android源代码采用Git工具来管理,所以需要先安装Git,它的安装方法如下:

apt-get install git-core gnupg


三.安装其他依赖包 

  sudo apt-get install  flex bison gperf build-essential \
  zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs \
  x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev \
  libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown \
  libxml2-utils xsltproc

四. 安装 repo

    我们知道,Android是由kernel、Dalvik、Bionic、prebuilt、build等多个Git项目组成,所以为了方便开发者下载Android源代码,Google编写了一个名为Repo的Python的脚本来统一管理这些项目的仓库,里面封装了所有用来下载Android源代码的Git命令,使得Git的使用更加简单。

   首先确保在当前用户的主目录下创建一个/bin目录(如果没有的话),然后把它(~/bin)加到PATH环境变量中

$ mkdir ~/bin
$ PATH=~/bin:$PATH
    通过curl下载Repo脚本,保存到~/bin/repo文件中,并赋予repo可执行权限

$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
$ chmod a+x ~/bin/repo

五.下载Android源代码

    首先,创建一个空的目录Android4.3(自命名),用来存放等一下下载的源代码,并进入该目录准备下载(guoke5是计算机用户名)

$ mkdir ~/Android4.3
$ cd /home/guoke5/Android4.3/
    

初始化repo


$ repo init -u https://android.googlesource.com/platform/manifest

    出现今天的第一个错误,如下图所示,提示“未找到repo命令”


解决方法:将repo路径重新加载到PATH中

$ PATH=~/bin:$PATH

然后重新执行命令,发现不会提示以上错误,但是弹出另一错误,Git "fatal: git 1.7.2 or later required",

意思是要求更新Git版本到1.7.2或以上


好吧,现在我们来更新Git版本

sudo add-apt-repository ppa:git-core/ppa
sudo apt-get update
sudo apt-get install git

在执行sudo apt-get update更新源的时候,出现如下问题:

正在读取软件包列表... 有错误!
E: 动态 MMap 没有空间了。请增大 APT::Cache-Limit 的大小。当前值:25165824。(man 5 apt.conf)
E: 处理 libkldap4 (NewVersion1)时出错
E: Problem with MergeList /var/lib/apt/lists/mirrors.163.com_ubuntu_dists_quantal_universe_binary-amd64_Packages
W: Unable to munmap
E: 无法解析或打开软件包的列表或是状态文件。
    解决方法:如提示说的,我们可以 增加Cache-Linit的大小来解决问题
sudo gedit /etc/apt/apt.conf
 在里面增加或者修改以下参数,把后面的数字尽量的调大即可,如果调大后重复出现该问题继续增加数字即可  
APT::Cache-Limit 99999999; 

    更新后Git后,进入Android4.3目录,重新执行repo的初始化命令,

repo init -u https://android.googlesource.com/platform/manifest
上述命令执行,会刷刷出现一大堆东西,等待执行完毕,我们就可以执行下面那句命令开始下载源代码了
repo sync 

    然后系统会开始源源不断地下载Android4.3源代码了。

 在此另外说一声,如果想下载其他版本的Android源代码,比如android-4.0.1的源代码,只需要将刚才那句repo初始化命令替换成类似以下的这句命令:

$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1
    其他版本号可以到这个官方网站查看: http://source.android.com/source/build-numbers.html

    然后是漫长的等待,如果下载过程中断了,执行 repo sync,继续下载...


    特意注意了一下,从开始下载,到源代码下载完成,大概用了1个钟,下载下来的文件夹足足有7.1G!!!



进入目录,就可以看到里面的各个文件夹了,像大名鼎鼎的sdk,frameworks,packages,tools等等...


好吧,废话不多说,开始编译!!


六. 编译Android源代码

进入源代码下载目录,初始化环境

$ source build/envsetup.sh  或者: . build/envsetup.sh

选择一个编译目标:

lunch full-eng

其中编译目标的选择可以参考官网的如下说明:


    然后执行make语句开始编译

 $: cd ~/Android4.3
 $: make -j2  (j2后面的数字是你要使用的线程数,看你电脑具体配置,CPU配置越好,能使用的线程越多,编译就越快)

    好吧,一开始编译就出现错误:/bin/bash: jar:找不到命令


解决方法:做个软链接,为防止等一下还出现类似的java javac,javadoc等命令也找不到的情况,所以,在这里未雨绸缪,把java,javac,javah,javadoc也一起给解决了。注意:路径根据自己电脑实际情况作相应改变。

   cd /usr/bin   
   sudo ln -s  /usr/lib/jvm/java/jdk1.6.0_41/bin/jar
   sudo ln -s  /usr/lib/jvm/java/jdk1.6.0_41/bin/java
   sudo ln -s  /usr/lib/jvm/java/jdk1.6.0_41/bin/javac
   sudo ln -s  /usr/lib/jvm/java/jdk1.6.0_41/bin/javah
   sudo ln -s  /usr/lib/jvm/java/jdk1.6.0_41/bin/javadoc




你见过如此霸气的散热么?



 好吧,晚上11点41分,终于编译结束...,我等到花儿都开了.
 发现编译结束后,源代码目录中多出一个out文件平,居然15.4G,难以想像!


七. 运行Android4.3模拟器

 emulator




 Android4.3君,就长这个样儿...
 注:下次重启进入源码目录,执行emulator命令重新启动模拟器,会提示找不到“emulator”命令的情况,此时,需要重新初始化环境变量,再重新 emulator就可以了

$ source build/envsetup.sh
$ lunch full-eng
$ emulator  

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值