跳至主要內容

AOSP-Android系统定制下载系统源码


AOSP-Android系统定制下载系统源码

前期准备

从这里开始,我们就去做android系统的修改,相信会有更多的同学有更多的玩法。

android是开源的,在源代码里没有秘密。

同学们可以去修改系统,做成自己喜欢的样子。做汽车的车机,到家里面的物联网系统。你可以改一个iOS一样的UI出来,也可以改一个跟Windows一样的UI出来。

前期准备:

做android开发,最好可以访问到google的网站!这样子你才可以访问AOSP的网站(https://source.android.com/)

什么是AOSP呢,原单词是:android open source project. 安卓开源项目

硬件方面

电脑配置尽量高一点,我用的mac(客户端)+服务器(两个E5的CPU+32G内存)机械硬盘也OK,同事做过实验,编译的瓶颈不在IO,另外一个服务器是1T的固态硬盘。

同学们的电脑一般i7就够用了,第一次编译时间长一点,后果面是增量编译,不需要太多的时间(5~10分钟左右)。

软件方面

在官网里有说明(https://source.android.com/setup/build/initializing.html)

1、系统要求

编译android系统使用Mac系统或者Ubuntu系统。

您必须使用 Linux 或 Mac OS。目前不支持在 Windows 环境下进行编译

我们这里推荐使用Ubuntu 14.04,我服务器上的也是这个版本。

2、工具软件

1)JDK,做android开发的同学肯定会配置这个的,如果不会配置这个的同学,先去学习基础。

2)安装所需要的软件,官方直接提供了在线安装命令:

sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev libgl1-mesa-dev libxml2-utils xsltproc unzip

3)安装 Repo

创建一个bin目录,你可以放在自己用户的home目录下面,并且当这个bin添加到环境变量中去。

mkdir ~/bin
PATH=~/bin:$PATH

下载repo,并且修改它的权限

curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo

同学们知道repo有什么用的吗?我的理解是repo是用来管理git的,而git用来管理android系统里面的各个模块(单独的应用/模块)

android系统是一个很庞大的系统,里面有很多单独的应用,也有很多不同的模块。而每个单独的模块或者应用是用git来管理。而repo则是用来管理git的。

repo也会提升效率,比如说你一个repo指令,就可以让所有的git同时去拉代码。可以查看所有项目的改变状态,等等.

但是也有不好的地方吧,这里我有踩过坑….

Android系统代码下载

有了前面的软件和硬件准备,我们就可以下载系统源码了。

1)创建文件夹,一般来说,我习惯用android版本号来命名,下面我们下载android5.1的系统为例子,这些版本去哪里看呢?当然是官网,由此可见,能上google是多么重要的事情呢。

mkdir 文件夹名称

mkdir android5.1

进入当前文件夹

cd android5.1

2)初始化,关联到远程仓库。如果没法访问google,可以使用清华镜像,或者中科大的镜像地址,这样下载速度也比较快。

清华镜像地址:https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/

中科大镜像地址:https://lug.ustc.edu.cn/wiki/mirrors/help/aosp

以下是清华大学的,格式是:repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b 版本号

版本号可以到这里去查看:

官网:https://source.android.com/setup/start/build-numbers.html#source-code-tags-and-builds

repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-4.0.1_r1

我们这里下载5.1的系统代码,我直接在系统上操作吧,这里的-u就是url,-b则是分支,branch

repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-5.1.0_r1

taskpopout3.gif
taskpopout3.gif

接着我们就可以同步代码了:

repo sync

也可以加上参数,这里的话就不要加了,并发太高的话别人就没法用了。

这样子就在同步代码了,具体要下载多久代码,那就看网速了。

可以晚上放着,第二天起床,没有什么问题的话,应该就可以了。

下载完成的样子:

20180920_094727.png
20180920_094727.png

系统编译

我们下载完源码以后,就会得到这样一份目录的代码了:

20180920_032851.png
20180920_032851.png

编译系统分几步呢?

我们先不分析这些文件夹有什么用,后面我们修改代码的时候才去进行说明。

系统编译

第一步:把脚本载入到环境中

source build/envsetup.sh
20180920_033151.png
20180920_033151.png

第二步:加载要编译的目标版本

20180920_033805.png
20180920_033805.png

第三步:编译系统

20180920_033959.png 我这里使用了make -j40

这个40就是你cpu的线程数的2倍。我的CPU是20线程,所以我用40,一般个人电脑的话,使用8/16就OK啦。看自己的配置即可。

等待系统编译完成,i7的顶配CPU大概1个小时左右,服务器快一点45分钟左右。

编译结果

编译完成以后,则会如下显示:

20180920_094844.png 看到上面这个,就是编译成功了!耗时一个小时9分钟,31秒

编译完成以后,就会多一个out目录

20180920_105123.png 至于跑起这个系统来,大家自己跑吧,因为我的系统是没有UI的。

运行自己编译出来的系统,通过以下命令启动模拟器即可

总结

android系统编译分为:环境搭建,下载源码,编译系统。

在编译系统的时候,我们用到了几个命令,source 这个其实就是把控制编译的脚本载入到环境中,可以直接使用里面的命令。其中我们的lunch也是里面的命令。而这个脚本是shell脚本。

20180920_034845.png
20180920_034845.png

打开脚本可以看到上面的说明。

也就是说,顺序不可以乱,必须先把脚本载入到系统环境中。

第二个是lunch,参数你填写编号可以,写名称也可以。

user,userdebug,eng各是什么意思呢?

以下是官网的说明:

20180920_035029.png 最后就是make啦,-j表示编译并发量,google的推荐是cpu线程数的2倍。我有验证过,太高了或者太低了会影响速度。