utuntu下载编译android源码
1.安装openjdk-7-jdk
$ sudo apt-getinstall openjdk-7-jdk
安装好之后修改 /etc/profile 中的环境变量,将openjdk加入到JAVA_HOME中
JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/
直接把Open Jdk 附在了后面
export CLASSPATH=.
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/
export PATH=$JAVA_HOME/bin:$PATH
然后使修改的配置文件立即生效:
$ . /etc/profile
查看java 这时使用的jdk 就是Open Jdk
接下来安装必备的工具软件
$ sudo apt-getinstall 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-getinstall libgl1-mesa-glx-lts-quantal:i386
$ sudo apt-get install bison
安装之后可能会报错、/bin/bash: prebuilts/misc/linux-x86/bison/bison: No such file or directory 。原因可能是某些其他安装包没有安装
$ sudo apt-get install g++-multilib gcc-multilib lib32ncurses5-dev lib32readline-gplv2-dev lib32z1-dev
接下来配置Cache,使用下面两条命令
$ sudo apt-get install ccache
$ source ~/.bashrc
然后就是下载repo :
首先创建repo 目录
$ mkdir ~/bin
$ PATH=~/bin:$PATH
然后就是下载repo,google官方被墙了,这里用的是清华大学镜像的:
$ git clone https://aosp.tuna.tsinghua.edu.cn/android/git-repo.git/
然后将git-repo 目录中的repo 文件拷贝到 bin目录
$ cp git-repo/repo ~/bin/
接下来打开bin目录下的repo 文件,修改其中的 REPO_URL 参数,修改为:
REPO_URL ='https://aosp.tuna.tsinghua.edu.cn/android/git-repo'
接下来就需要初始化repo:
先创建目录aosp,就是等会要存放android源码的目录
$ mkdir ~/aosp
进入到aosp目录中
$ cd ~/aosp
初始化repo,最新的android 都可以进行下载,以下三条命令任意执行一条就可以了,会下载不同版本的android源码,我采用的是android-5.1.1
$ repo init -u git://aosp.tuna.tsinghua.edu.cn/android/platform/manifest -b android-5.1.1_r4
$ repo init -u git://aosp.tuna.tsinghua.edu.cn/android/platform/manifest -b android-6.0.1_r22
$ repo init -u git://aosp.tuna.tsinghua.edu.cn/android/platform/manifest -b android-n-preview-1
$ repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-9.0.0_r8
在初始化的时候会要求输入名字和邮箱,正常输入就可以了。
最耗时间的步骤来了,下载android源码
$ repo sync
我在同步的过程中有好几次出现Error,不用管,加上参数 -f 继续同步
$ repo sync -f
这个过程是很漫长的,我的小水管用了一天多才同步完成。
下载完成之后就是编译了,我的计算机是双核4线程,编译的还比较快,用了差不多5个小时编译完成:
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 -j4
表示4个线程进行编译,因为我的计算机是双核4线程,如果机器配置更好,可以开更多的线程,减少编译时间
make 失败或停止后,可以使用make -k 继续编译,不过我是一次就编译成功了。
编译成功之后
会在aosp目录下编译产生out目录
然后就可以运行编译产生的模拟器了:
$ emulator &
运行的结果就是这样:
下次如果执行emulator 命令提示command not found,则需要进入aosp目录执行. build/envsetup.sh
和 lunch 命令,lunch命令会将 prebuilts/android-emulator/linux-x86_64/
加入到PATH环境变量中。