首页
社区
课程
招聘
[原创]记一次安卓系统源码下载过程。
发表于: 2017-6-10 21:31 14860

[原创]记一次安卓系统源码下载过程。

2017-6-10 21:31
14860

最近买了个Nexus 5 手机准备学习android4.4.4源码。Nexus 5 刷入从第三方下载的ROM后,总是推送各种第三方APP,于是自己打算下载编译一次官方的源码。小白的学习记录过程分享,大神勿喷,请忽略。 Google官方的教程:https://source.android.com/source/initializing

关于Android各个版本的编译环境的搭建,大家可以参考我去年翻译的Android 官方文档http://blog.csdn.net/u012417380/article/details/51472860。我目前打算用VM虚拟机编译Android 4.4.4  版本,它官方要求的具体环境是:
硬件环境

注:上述环境是官方以最新版本为要求的环境。我打算用VM 虚拟机运行Lunix编译,目前的方案是 动态分配硬盘大小为150G,内存分配 4GB,交换空间分配8GB。
软件环境
1.操作系统
Linux:
Android 2.3.x (Gingerbread) - Android 5.x (Lollipop): Ubuntu 12.04 (Precise)  
2. Java Development Kit (JDK)
Android 2.3.x (Gingerbread) - Android 4.4.x (KitKat): Ubuntu - Java JDK 6, Mac OS - Java JDK 6
3. Key packages
Python 2.6 – 2.7 下载官网 python.org
GNU Make 3.81 – 3.82 下载官网:gnu.org ; Android 4.0.x (Ice Cream Sandwich) 以及之前的版本需要 使用 maker 3.81 来避免编译错误。
Git 1.7 + 下载官网 git-scm.com

虚拟机:动态分配硬盘大小为150G,内存分配 4GB,交换空间分配8GB。
操作系统:ubuntu-12.04.5-desktop-amd64.iso
这里写图片描述
安装成功后安装VM Tools,这里不介绍

jdk版本:jdk-6u45-linux-x64.bin
详细安装及环境变量配置参考我这篇博文: Ubuntu 下JDK的安装与环境配置

用Ubuntu12.04来编译安卓更旧的版本时,安装下面的安装包:

如果在乌班图系统下编译后,并用USB数据线进行对NEXUS 5 刷机,那么默认情况下普通用户无法直接使用 USB 设备。需要以root用户身份在‘/etc/udev/rules.d/51-android.rules’下创建一个文件。
为此,请运行以下命令来下载本网站附带的 51-android.txt 文件,对其进行修改以包含您的用户名,然后将其放到正确位置

下面的的命令会自动下载51-android.txt 文件,对文件中<username>字段替换成你的用户名,并将文件放在/etc/udev/rules.d/51-android.rules文件文件中

如果显示拒绝连接无法下载的话,将51-android.txt文件放在本地目录任意一目录,在该目录中执行下面的命令。

执行完后,为了验证NEXUS 5 与乌班图是否连接,将nexus 5的USB计算机连接方式设置为相机,可以看到乌班图能够识别设备了。
这里写图片描述
这里写图片描述

默认情况下,每次编译的输出都会存储在相应源代码树的 out/ 子目录下。如果将源文件和输出存储在单独的存储卷中,编译速度会更快。
要进行这项设置,请导出 OUT_DIR_COMMON_BASE 变量,使其指向将存储输出目录的位置。

对于每个单独的源代码树,其输出目录都将以其存放目录命名。
例如,如果您有源代码树 /source/master1 和 /source/master2,并且 OUT_DIR_COMMON_BASE 设为了 /output,那么输出目录将为 /output/master1 和 /output/master2。这个过程后续会验证

安卓系统源码放在git仓库中

repo 是安卓环境下的命令行工具,对Git部分命令进行封装,将 百多个git库进行更新。
按照如下步骤进行安装Repo.

当你安装完Repo后,设置安卓源码仓库的客户端:

由于我下载的版本是 Android4.4.4_r1所以将WORKING_DIRECTORY替换成Android444_r1:
这里写图片描述
即:

由于google站无法访问,所以我选择了清华的下载源,用下面的命令下载

repo  init 后,会提示你输入名字和邮箱, 两个我都是直接按的回车键,这时它默认将系统用户名和主机名 作为用户名和邮箱,接着我直接按了y,提示repo初始完。

这里写图片描述

接着就是漫长的等待,如果中间出现中断,只要重复该命令即可。
下载成功后提示:

这时可看到Android444r1文件夹下checkout出的代码:
这里写图片描述
checkout出的代码有9.4G
这里写图片描述
进入隐藏的 .repo目录,查看当前分支大小,有64G呢

这里写图片描述
如果想check out 其它分支代码,将工作目录下check out出的代码删除,保留隐藏的.repo 目录,重新初始化分支执行上述流程就行,这时会快很多。


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 1
支持
分享
最新回复 (19)
雪    币: 440
活跃值: (1153)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
期待后续的教程
2017-6-11 00:52
0
雪    币: 427
活跃值: (488)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
不错不错
2017-6-11 07:32
0
雪    币: 6
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
好像jdk得1.7
2017-6-11 08:32
0
雪    币: 9479
活跃值: (757)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
/  只分了15G,还把android放到~/,确定够用吗
2017-6-11 12:15
0
雪    币: 154
活跃值: (596)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
6
无边 / 只分了15G,还把android放到~/,确定够用吗
/home  下挂了150G,整个androd都在home下
2017-6-11 13:56
0
雪    币: 154
活跃值: (596)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
7
字母姐 好像jdk得1.7

   

2017-6-11 14:07
0
雪    币: 3
活跃值: (33)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
文章写的很不错,点个赞。
提几点小建议:
1.  ubuntu系统的分区方案总体合理,可以去掉/boot分区(这是早年Linux内核不稳定时才需要单独划分/boot),只要/、/swap、/home
2.repo脚本可以单独配置REPO_URL环境变量,可配置为清华的repo仓库,避免repo命令仓库无法拉取(所谓repo命令仓库指的是  .repo/repo)
3.  清华镜像还提供了每月更新包,可以下载更新包解压,之后使用repo  sync快速拉取。

最后想说的是:Android  O都要发布了。目前工业街基本都上Android7.0了,再搞4.4意义不大呀~
2017-6-11 19:21
0
雪    币: 154
活跃值: (596)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
9
只是照着官方教程做了一遍,谢谢你的建议,又get到新知识了
2017-6-12 00:04
0
雪    币: 62
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
10
2017-6-12 14:48
0
雪    币: 62
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
11
你QQ是多少?
2017-6-12 14:54
0
雪    币: 12720
活跃值: (3695)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
repo  init  -u  https://aosp.tuna.tsinghua.edu.cn/platform/manifest  -b  android-4.4.4_r1,小写的android
2017-6-18 21:14
0
雪    币: 154
活跃值: (596)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
13
马来 repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-4.4.4_r1,小写的android
谢谢指出错误,已改正
2017-6-18 22:17
0
雪    币: 438
活跃值: (228)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
14
虚拟机需要这么大的硬盘空间?
2017-6-18 23:40
0
雪    币: 440
活跃值: (1153)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
15

配好环境重启后直接在开机界面进不去系统了,楼主有没有这种情况


2017-7-4 22:29
0
雪    币: 31
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
cccczzzzssss@ubuntu:~$  repo    init    -u    https://aosp.tuna.tsinghua.edu.cn/platform/manifest    -b    android-4.4.4_r1
fatal:  Cannot  get  https://gerrit.googlesource.com/git-repo/clone.bundle
fatal:  error  [Errno  101]  Network  is  unreachable
cccczzzzssss@ubuntu:~$ 
有没有遇到一样问题的 
2017-9-6 15:14
0
雪    币: 206
活跃值: (108)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
17
mark。。。。
2017-10-12 10:55
0
雪    币: 699
活跃值: (444)
能力值: ( LV9,RANK:240 )
在线值:
发帖
回帖
粉丝
18
猫子 配好环境重启后直接在开机界面进不去系统了,楼主有没有这种情况
我遇到了,你解决了么
2018-2-25 22:56
0
雪    币: 699
活跃值: (444)
能力值: ( LV9,RANK:240 )
在线值:
发帖
回帖
粉丝
19
猫子 配好环境重启后直接在开机界面进不去系统了,楼主有没有这种情况
解决了。http://eternalsakura13.com/2018/02/24/bianyi/
我自己写了下编译过程……比这篇简单不少
2018-2-26 01:25
0
雪    币: 440
活跃值: (1153)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
20
sakura零 解决了。http://eternalsakura13.com/2018/02/24/bianyi/ 我自己写了下编译过程……比这篇简单不少
谢谢分享,  我也解决了,我是重装Ubuntu14系统,再按照官方的方法就可以了
最后于 2018-2-26 21:35 被猫子编辑 ,原因:
2018-2-26 21:32
0
游客
登录 | 注册 方可回帖
返回
//