ubuntu 14.04 下编译 android5.1 源码

1,380 阅读1分钟
原文链接: www.jianshu.com

本文参考了以下文章
www.cnblogs.com/lanrenxinxi…
mirrors.tuna.tsinghua.edu.cn/help/AOSP/
特此感谢,谢谢清华的伙伴提供的国内镜像。在这个被墙的国度真的很有用。


1、准备工作

先对的的源进行一下更新

sudo apt-get install update

安装jdk

sudo apt-get install openjdk-7-jdk

安装好之后修改 /etc/profile 中的环境变量,将openjdk加入到JAVA_HOME中

JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/

然后使修改的配置文件立即生效:

source /etc/profile

接下来安装必备的工具软件

$   sudo apt-get install git gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev libx11-dev:i386 
     libreadline6-dev:i386 libgl1-mesa-dri:i386 libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc 
     zlib1g-dev:i386 dpkg-dev

我这里安装的时候是直接成功的,如果出错,可以参考这个

ERROR:unity-control-center : 
   依赖: libcheese-gtk23 (>= 3.4.0) 但是它将不会被安装 
   依赖: libcheese7 (>= 3.0.1) 但是它将不会被安装

这里的报错是因为是由 libgl1-mesa-glx:i386 报引起的,需要替换掉,更改为:

$ sudo apt-get install libgl1-mesa-glx-lts-quantal:i386

接下来配置Cache,使用下面两条命令

$ sudo apt-get install ccache 
$ source ~/.bashrc

然后就是下载repo :
首先创建repo 目录

$ mkdir ~/bin 
$ PATH=~/bin:$PATH
//下载repo
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo

这里你可以会思考,这个ropo是什么鬼?这里需要说明一下,andoid源码是使用git管理,管理的话是使用 repo + gerrit

然后将git-repo 目录中的repo 文件拷贝到 bin目录

$ cp git-repo/repo ~/bin/

接下来打开bin目录下的repo 文件,修改其中的 REPO_URL 参数,修改为:

REPO_URL = 'git://aosp.tuna.tsinghua.edu.cn/android/git-repo'

这里有点需要注意,在最新的清华源有点修改,将git协议该成了https,因此,你可能需要修改成如下代码
REPO_URL = 'gerrit-google.tuna.tsinghua.edu.cn/git-repo'

接下来,我们就是要创建一个用于存贮源码的路径,并且初始化repo

$ mkdir ~/aosp  
$ cd ~/aosp
$ repo init -u git://aosp.tuna.tsinghua.edu.cn/android/platform/manifest -b android-5.1.1_r4

这里想用的,需要修改git为https

2、源码下载

$ repo sync

如果在下载的过程中,出现错误,可以不用管,直接使用

$ repo sync -f

3、编译整个源码

当我们所有的准备工作都做好之后,下面就可以直接进行的编译操作了。

1) 设置cache

$ cd aosp $ prebuilts/misc/linux-x86/ccache/ccache -M 50G

2) 初始化编译环境

$ . build/envsetup.sh

3)选择编译目标包
有很多中,可以用lunch命令查看,我选择的是最常用的arm

$ lunch aosp_arm-eng

4)编译
可以在 make 后设置参数,加快编译速度,我用的是

 make -j8 //我的cpu是4核8线程,所以我开了8个线程同时下载

当你看到如下代码的时候,你应该会露出开心的笑容了。因为这表示着你成功的编译了代码。

Creating filesystem with parameters:
    Size: 576716800
    Block size: 4096
    Blocks per group: 32768
    Inodes per group: 7040
    Inode size: 256
    Journal blocks: 2200
    Label: 
    Blocks: 140800
    Block groups: 5
    Reserved block group size: 39
Created filesystem with 1467/35200 inodes and 109543/140800 blocks
Install system fs image: out/target/product/generic/system.img
out/target/product/generic/system.img+ maxsize=588791808 blocksize=2112 total=576716800 reserve=5947392

#### make completed successfully (54:50 (mm:ss)) ####

4、运行模拟器

$ emulator