- 环境搭建
- 下载代码
- 编译代码
1. 环境搭建
- 使用Ubuntu14.04
- 下载openjdk8
- 2.1 添加PPA
sudo add-apt-repository ppa:openjdk-r/ppa
- 2.2 安装openjdk8
sudo apt-get update
sudo apt-get install openjdk-8-jdk
- 2.3 查看当前所有的javac和java版本并且选择java8
sudo update-alternatives --config javac
sudo update-alternativers --config java
- 安装编译时所会用到的工具
sudo apt-get install git gnupg 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
2. 下载代码
- 下载repo
repo是google为了管理android源代码而开发的工具,本身是对git的一个包装。- 1.1 在主目录中创建bin目录并且配置到环境变量中
mkdir ~/bin
PATH=/bin:$PATH
- 1.2 下载repo并且使其可执行
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
- 下载代码
- 2.1 初始化repo
repo init -u https://android.googlesource.com/platform/manifest -b android-8.1.0_r40
我下载的是android-8.1.0_r40这个分支的代码
- 2.2 同步代码
repo sync -j4 --no-tags
-j4:开启4个线程
--no-tags:不下载版本的tag,在git中每个版本都会有对应的tag
根据tag可以找到对应的版本
- 下载代码时遇到的问题
- 问题一
curl: (22) The requested URL returned error: 404 Not Found
Server does not provide clone.bundle; ignoring.
不用理会便可。repo想下载一个预先打包好的bundle文件,可以提高下载效率,但是服务器没有提供,所以会出现这个问题。但是我们继续下载就可以了 - 问题二
当下载中断时, 再次执行repo sync -j4 继续下载便可
- 问题一
3. 编译代码
如果前面的环境搭配好,编译就会非常简单
- source build/envsetup.sh
- lunch
- 在lunch之后选择1(代表模拟器)
- make -j4
时间等待较长,编译完成之后在out/target/product/产品名/
下都是编译产物