android 例子源码_AOSP系列文章(一)Android系统源码下载和编译

62d06e2c0f0648bbbb5e69b73494f50e.png

前期准备

从这里开始,我们就去做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开发的同学肯定会配置这个的,如果不会配置这个的同学,先去学习基础。

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 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仓库

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

9f677d1aa471462f49f8613610543752.gif

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

repo sync

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

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

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

下载完成的样子:

2e43f1744e92b619841fef8328f1fa1a.png

系统编译

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

fd61a32baa77b0a6638d42daf3de41e7.png

编译系统分几步呢?

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

系统编译

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

source build/envsetup.sh

cf619a3fea1415c8d6efa5e656609ccd.png

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

1a162d9fa5f66e0aa699f4533c9623e6.png

第三步:编译系统

164a7e42e1a387c731f1c271c5ff53d9.png

我这里使用了make -j40

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

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

编译结果

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

4e094c8a155d34fd25b24f810d8a24f5.png

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

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

20cbc1536a1571817030f74035a372ff.png

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

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

emulator

源码下载地址:

https://pan.baidu.com/s/1fbLQR69JuEWa0RdF0vEjpQ 提取码:at1k 

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

90abed6c24e33389417e16a343c0fdad.gif

总结

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

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

c4f49784308b159c5bd1b2c44f70c273.png

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

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

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

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

以下是官网的说明:

a4a7562bc5b600a13d3358ff50a9a1d8.png

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值