您的位置 首页 > 天生丽质

【repo是什么意思】AOSP系列文章(一)-Android系统源码下载和编译

事前准备

从这里开始修改Android系统。我相信更多的学生可以玩更多的游戏。(威廉莎士比亚)(美国电视剧《Northern Exposure》)。

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

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

前期准备:

做android开发,最好可以访问到google的网站!这样子你才可以访问AOSP的网站

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

硬件方面

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

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

软件方面

在官网里有说明

setup/build/initializing.html

1、系统要求

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

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

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

2、工具软件

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

jdk稍微注意一下,6.0是要1.7.x的版本7.0以上的是1.8+,目前我测试了这两个版本。

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 > ~/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,可以使用清华镜像,或者中科大的镜像地址,这样下载速度也比较快。

清华镜像地址:

中科大镜像地址:

以下是清华大学的,格式是:repo init -u -b 版本号

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

官网:

setup/start/build-numbers.html#source-code-tags-and-builds

初始repo仓库

repo init -u -b android-4.0.1_r1

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

repo init -u -b android-5.1.0_r1


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

repo sync

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

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

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

下载完成的样子:



系统编译

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


编译系统分几步呢?

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

系统编译

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

source build


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


第三步:编译系统


我这里使用了make -j40

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

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

编译结果

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


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

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


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

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

emulator

源码下载地址:

提取码:at1k

这个是我今天编译的android7.1.1,以上是5.1的代码下载和编译。套路是一样的,环境搭建,下载源码,编译。至于增量编译,单独编译那些,我们后面再单独分析吧。


总结

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

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


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

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

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

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

以下是官网的说明:


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

关于作者: admin

无忧经验小编鲁达,内容侵删请Email至wohenlihai#qq.com(#改为@)

热门推荐