今天(2016年11月6日)终于编译成功,参考的教程有很多,本来也想写一写,但发现自己可能对编译这东西考虑不全,误导了人,所以只好放弃自己写教程的想法。
一:下载Android源码
关于这一步,网上有下载好的源码,或者去清华大学开源软件镜像站下载,都很快的。
Android6.0源码,网盘下载地址:http://pan.baidu.com/s/1o6N86a2#path=%252F(这是别人上传的,我也是这里下载的,如果失效,请留言)
或者到http://blog.csdn.net/ilittleone/article/details/6823441 这位博主那下载
1、网盘下载:
下载完后(用网盘下载更快一点,然后拷贝到Ubuntu下Home目录或者其他,我参考了原作者)
- 在Ubuntu下的/Home目录下启动终端(Terminal)
- 进入Home/android6_r1
- 使用命令:cat Android6_r1_* > M.tgz 稍等一会儿就生产M.tgz
- 校验一下:
md5sum M.tgz (下载目录中有相关的md5校验码)
- 解压M.tgz:tar zxvf M.tgz
- 就出现mydroid这个目录
2、镜像站下载
直接去清华大学开源软件镜像站下载,使用的是repo下载
仔细看教程,就没什么问题。或者参考这篇文章《Ubuntu 下载 & 编译 Android5.1 源码》
但是在那里下载好像有些下载不了,我这里提示我链接不上。。
比如直接下载镜像站中提供的实例:
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-4.0.1_r1
这个就可以
如果我下载其他的版本分支,比如
repo init -u git://aosp.tuna.tsinghua.edu.cn/android/platform/manifest -b android-5.1.1_r4
总是提示没有网络,,我猜测是镜像站中可能没有所有aosp分支的资源。(后来发现git下载取消了,改为https下载就可以啦)
所以最后用了网盘中6.0的版本编译
二:编译环境配置
jdk版本要1.7++,一开始我的是1.6,在编译时报错断开,最后安装了openjdk-7-jdk,顺利编译。
Unbuntu用户的根目录下,然后依次执行以下命令:
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
以上命令主要是安装编译源码时需要用到的各种软件,如果没有安装这些软件,编译的过程中会提示缺少必要的软件而无法继续编译,因此,在正式编译源码之前,一定要先安装这些软件。(直接摘抄,懒得打字)
三、编译android源码
- 切换到mydroid/目录下
- 在控制台中执行命令:source build/envsetup.sh (导入编译Android源码所需的环境变量和其它参数)
- 在控制台中执行命令:lunch,运行命令之后会提示我们选择编译目标。
- 这里我选择的的默认目标,即aosp_arm_eng(也就是选择1)
- 在控制台中执行命令:make -j8,开始编译。注意,make -j8命令中的数字6和我8们电脑的CPU核心数以及线程数有关系,一般这个数字的数值最大不能超过CPU线程数的2倍
- 耐心等待,,,我的3个半小时左右
- 如果编译成功没有退出终端,在控制台中执行命令:emulator
- 如果退出了,那么在mydroid目录下,在执行步骤(2)(3),然后emulator即可
四、单个编译系统应用
使用mmm编译单个系统应用
- mmm packages/apps/Email/
- make snod
- emulator
就可以显示修改后的应用。
本文参考《在Ubuntu Server14.04上编译Android6.0源码》(前三个步骤)和《如何单独编译Android源代码中的模块 》(最后一个步骤)
链接失效可以看看这 http://pan.baidu.com/s/1ngsZs 网络大神分享的