http://source.android.com/source/initializing.html 官网操作方法
说明:本次是下载android4.4最新源码并编译的过程,
环境:本次使用UbuntuKylin发布的长期支持系统14.04
前提条件:
1 系统:Linux/ Ubuntu / Mac OS == (2.3.x以上必须使用64位),至少30GB 的硬盘存储空间,有可能达到100GB以上在编译中,其中源码下载后总共大约8.5GB ,
2 网络条件:有google帐号,国内容易被墙,所以。。。
3 软件环境:jdk,git,python,curl,make, ==
电脑配置越好,速度也就越快了-_-!
一.设置编译环境
1 . 使用ubuntu 10.04版本以上,对以android 2.3.x以上的版本,必须使用64位的环境,比较老的则可以在32位环境下编译。
也可以在虚拟机下编译android,但是你的机器至少有16gb内存,这个就不大现实了吧,一般人的机器还是没那么高配的,所以忽略不看。
2.安装JDK,最新的源码编译需要java7,当然也可以用6版本,但是最新的总是有好处的,所以就用7.因为版权问题,推荐在ubuntu下安装OpenJDK即可,当然也可以使用标准oracle的JDK. 在终端下输入 sudo apt-get install openjdk-7-jdk ,输入密码,一路yes安装即可。
如果提提示成功,试下这个命令,那么才是真的成功了,
java -version
java version "1.7.0_51"
OpenJDK Runtime Environment
(IcedTea 2.4.6) (7u51-2.4.6-1ubuntu4)
OpenJDK 64-Bit Server VM (build
24.51-b03, mixed mode)
3. 安装一些必要的工具
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-glx:i386 libgl1-mesa-dev g++-multilib mingw32 tofrodos 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
4 设置缓存
在当前用户目录下找到.bashrc写入 export USE_CCACHE=1
默认缓存目录为当前用户下的.ccache目录,一般使用默认即可,如果有特殊情况则设置缓存目录, export CCACHE_DIR=your_cache_dir
建议缓存大小为50~100GB
5.输出目录
默认下输出目录在你下载源码的子目录下 out
如果把输出目录设置为另外一个不同的盘,则编译速度会快很多,
export
OUT_DIR_COMMON_BASE=your_out_dir
二.下载源码
1 下面是下载源码前的准备过程
新建一个目录用于存放下载用到的工具
mkdir ~/bin 在当前用户下新建一个bin目录
PATH=~/bin:$PATH
使用临时的path,可以在.bashrc中写入 下面这句永久生效
export PATH="$PATH:/home/user/bin/:." 没个之间使用:分开,最后一个是.表示当前目录
2 下载源码工具之repo
大家都知道一般源码是存放git上的,但是考虑到众多的android分支及各个功能,那是有一大堆git等着你去clone啊,那还不是要你的命,因此google把这些git地址写成了一个repo,其实里面也就是那些git地址了,只不过方便我们使用.
正常情况下使用下面的这句
curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
但是在china网络就是喜欢抽风,当失败时可以试下这个
curl http://git-repo.googlecode.com/files/repo-1.19 > ~/bin/repo
把文件下载到bin目录下,下载完成后 chmod a+x ~/bin/repo 增加可执行权限 ,可以试一下 输入repo命令,看输出就知道成功没.
3.新建目录用于存放源码的目录,进入该目录下
获取最新的版本 http://source.android.com/source/build-numbers.html 这里查看最新的版本对应的名字
repo init -u https://android.googlesource.com/platform/manifest -b android-4.4.2_r2
出现了如下错误提示
别急,把你当前目录下的.repoconfig删除
rm -rf .repoconfig
https://android.googlesource.com/new-password 到这里验证一下你的身份,把得到的以machine 两行开始的 复制保存为.netrc ,(有个点,表示为隐藏的文件)保存到你的目录下,
再次执行(中间加了个/a )
repo init -u https://android.googlesource.com/a/platform/manifest -b android-4.4.2_r2 (下载原生的android)
如果是下载CM11的话就用
cm_repo 下载,用法和上面的一样,只是区分了命名而已,且这个不用那么麻烦
cm_repo init -u git://github.com/CyanogenMod/android.git -b cm-11.0 (下载CM的源码)
等待完成
4 正是开始下载源码中
先用这个脚本保存到前面那个bin目录下,加执行权限
download.sh
#!/bin/bash
echo "======start repo sync======"
repo sync
while [ $? == 1 ]; do
echo "======sync failed, re-sync again======"
sleep 3
repo sync
done
用这个shell代替直接使用repo sync,这个网络问题很容易出问题,需要不停的操作,所以这个shell就可以解决问题了
用上一天半天的时间,让机子下载去吧.