6.0源码下载
下载方式有很多,出的去可以直接去Google Source下载,或者别人共享资源(有些会出现解压报错),或者镜像站AOSP下载
前提条件:Ubuntu14.04环境
AOSP镜像下载:
1.下载repo文件,自行下载
2.修改repo文件中REPO_URL
google的地址
REPO_URL = 'https://gerrit.googlesource.com/git-repo'
改为清华大学的地址
REPO_URL = 'https://gerrit-google.tuna.tsinghua.edu.cn/git-repo'
3.将改好repo文件拷贝到"/usr/bin/"文件夹下,并赋予“可读可写可执行”权限,
chmod a+x repo
可省去以下配置变量步骤
mkdir ~/bin
PATH=~/bin:$PATH
4.创建代码目录(Linux文件目录区分大小写)
mkdir /Documents/android_source
cd /Documents/android_source
5.初始化仓库
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-6.0.1_r72
#-b 后面的参数为分支的名称,每个版本的分支名称可以在android官网列表中查看https://android.googlesource.com/platform/build/
下载完成后,当前目录下会出现.repo目录的隐藏文件夹,进入子目录中可看到manifest文件包含各个分支的版本号说明,代码都是根据它从checkout出来的,这个文件夹特别大,我下载完成后查询内存大小为70G,
6.同步源码树(以后只需执行这条命令来同步)
repo sync
# 支持(-j4) 表示并发数为4,清华镜像只支持最大并发数4
剩下的就是等待下载完成了,android-6.0.1_r72的源码内存大小在30G。如果没有删除.repo文件夹,以后只需每次运行“repo sync”即可保持同步。
另一种源码下载方式:
分卷下载,md5sum校验文件是否损坏,cat合并成.tgz文件,解压
OpenJdk7安装
sudo apt-get update
sudo apt-get install openjdk-7-jdk
sudo update-alternatives --config java
sudo update-alternatives --config javac
编译所需的包,预安装
sudo apt-get install git gnupg flex bison gperf build-essential
sudo apt-get install zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev
sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386
sudo apt-get install libgl1-mesa-dev g++-multilib mingw32 tofrodos
sudo apt-get install python-markdown libxml2-utils xsltproc zlib1g-dev:i386
sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
开始编译,进入到源码所在的目录,命令如下
source build/envsetup.sh
lunch ##运行命令之后会提示选择编译目标,我选择默认目标,即aosp_arm_eng
make ##(也可以使用 make -j4 四线程编译)
注:我使用的是make,没有加-jx ,主要是用的虚拟机,没有分配太多CPU资源,中间出现过虚拟机无响应,强制关机之后,出现无法打开Ubuntu图形界面,而是进入了tty命令模式,痛苦的不行。
以下是编译过程出现的异常汇总:
解决:Android M引入了Jack (Java Android Compiler Kit),在编译时会启动jack server,优化编译速度等。
如果遇到jack编译错误,可以把$HOME/.jack中的配置文件中的SERVER=true设成false,不用jack,jack现在还不稳定。此外,M对应的是OpenJDK7。
还有一个关于Java VM内存不够的问题,没有保存到截图,没做任何处理,重新make就好了。
OpenJDK Client VM - Cannot allocate memory
另一种解决方案:
中间等待的时间有点长,花费时间跟虚拟机的配置有关,我画了4个小时左右。
生成system.img所在目录:/out/target/product/generic/system.img
编译完成后,可以运行模拟器了,如果我们上图的命令界面还在,可以直接输入命令
emulator
或者当前界面关了,可以运行如下这些命令
$ source build/envsetup.sh
$ lunch
$ emulator
我的因为是tty命令模式界面,emulator启动失败了。