前言:为了研究安卓系统,我们需要下载安卓源码,本篇博文参考安卓官网https://source.android.com ,对安卓系统各个版本源码的下载做出了详细解释。

一、环境要求概览

在下载编译安卓系统源码前,我们必须对各个版本安卓系统源码的编译环境有一定了解,否者可能导致安卓系统源码编译失败。

1 硬件要求

硬件应该满足以下条件:
● Android 2.3.x Gingerbread(姜饼) 以及包括 master branch (主分支)在内以上的新版本,要求 以 64 位系统环境编译。Android 2.3.x之前的旧版本可以以 32 系统环境编译。
●至少100GB的磁盘空间用于校验。单个版本编译需要150GB磁盘空间,多版本编译需要200GB以上成磁盘空间。如果你使用ccache(complier cache 编译器缓存 ,可以提高编译速度),你会需要更多的空间。
● 如果在虚拟机上运行 Lunix,至少需要 16GB的RAM/swap空间。
(ps:后两条要求可能以最新系统版本编译环境要求的,实际上我们很可能达不到。)

2 软件要求

Android Open Source Project (AOSP) master branch (主分支)通常在Ubuntu Long Term Support (LTS) 发行版上测试开发,但也可能在其它版本上测试开发。
你的工作环境必须包含以下软件列表:

1. 操作系统

安卓系统源码通常在Linux或者Mac OS 操作系统上进行编译。也可能在虚拟机中进行编译。

Linux

● Android 6.0 (Marshmallow) - AOSP master: Ubuntu 14.04 (Trusty)
Android 2.3.x (Gingerbread) - Android 5.x (Lollipop): Ubuntu 12.04 (Precise)
● Android 1.5 (Cupcake) - Android 2.2.x (Froyo): Ubuntu 10.04 (Lucid)

Mac OS (Intel/x86)

● Android 6.0 (Marshmallow) - AOSP master: Mac OS v10.10 (Yosemite) or later with Xcode 4.5.2 and Command Line Tools
● Android 5.x (Lollipop): Mac OS v10.8 (Mountain Lion) with Xcode 4.5.2 and Command Line Tools
● Android 4.1.x-4.3.x (Jelly Bean) - Android 4.4.x (KitKat): Mac OS v10.6 (Snow Leopard) or Mac OS X v10.7 (Lion) and Xcode 4.2 (Apple’s Developer Tools)
● Android 1.5 (Cupcake) - Android 4.0.x (Ice Cream Sandwich): Mac OS v10.5 (Leopard) or Mac OS X v10.6 (Snow Leopard) and the Mac OS X v10.5 SDK

2. Java Development Kit (JDK)

由于Ubuntu 14.04没有可支持使用的OpenJDK 8 软件包,所以Ubuntu 14.04必须手动安装Ubuntu 15.04 OpenJDK 8包才可使用
● The master branch of Android in AOSP: Ubuntu - OpenJDK 8, Mac OS - jdk 8u45 or newer
● Android 5.x (Lollipop) - Android 6.0 (Marshmallow): Ubuntu - OpenJDK 7, Mac OS - jdk-7u71-macosx-x64.dmg
● Android 2.3.x (Gingerbread) - Android 4.4.x (KitKat): Ubuntu - Java JDK 6, Mac OS - Java JDK 6
● Android 1.5 (Cupcake) - Android 2.2.x (Froyo): Ubuntu - Java JDK 5

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

二、构建编译环境

本节将介绍如何构建本地编译环境。

1.选择一个版本分支

不同版本的系统源码要求不同的编译环境,下面给出了安卓系统各个版本的相关信息。

● 代码名称、版本、API级别以及相应的NDK版本信息

● 源码标签以及编译版本

Factory Images for Nexus Devices下载:https://developers.google.com/android/nexus/images
Binaries for Nexus Devices 下载:
https://developers.google.com/android/nexus/drivers

2.设置 Linux平台编译环境

下面的指令适用于各个分支,包括主分支(master 最新版本)。
安卓系统通常在最近的系统版本Ubuntu LTS (14.04)上进行进行测试。
Gingerbread (2.3.x) 以及以上的版本(包括master在内)要求64-bit 系统环境, Gingerbread (2.3.x) 之前的版本可以在32-bit系统环境上进行编译。

●安装JDK

安卓系统主分支(master 最新博文)要求Java 8语言.并且要求在乌班图上使用OpenJDK。
安卓系统各个版本使用的JDK版本,请查看本篇博文第一节中的JDK小节。

Ubuntu >= 15.04

运行下面的指令

$ sudo apt-get update
$ sudo apt-get install openjdk-8-jdk

Ubuntu LTS 14.04

Ubuntu 14.04没有针对该系统版本开发的OpenJDK 8 安装包,但是Ubuntu 15.04 OpenJDK 8 安装包可以在Ubuntu 14.04上成功安装运行使用, 更新的 OpenJDK 8 安装包 (e.g. those for 15.10, 16.04) 在Ubuntu 14.04上无法使用上面的指令进行安装使用。

1.从archive.ubuntu.com 下载64-bit 架构的.deb安装包

openjdk-8-jre-headless_8u45-b14-1_amd64.deb with SHA256
0f5aba8db39088283b51e00054813063173a4d8809f70033976f83e214ab56c0
openjdk-8-jre_8u45-b14-1_amd64.debwith SHA256
9ef76c4562d39432b69baf6c18f199707c5c56a5b4566847df908b7d74e15849
openjdk-8-jdk_8u45-b14-1_amd64.deb with SHA256
6e47215cf6205aa829e6a0a64985075bd29d1f428a4006a80c9db371c2fc3c4c

2.对安卓包进行sha256sum校检(可省略本步骤)

例如使用sha256sum工具进行校检

$ sha256sum {downloaded.deb file}
3.安装JDK安装包
$ sudo apt-get update

运行你下载的3个安装包,在安装过程中可能提示你安装相应的依赖项

$ sudo dpkg -i {downloaded.deb file}

解决这些依赖项产生的问题

$ sudo apt-get -f install

● 安装需要安装的安装包(Ubuntu 14.04)

你需要一个 64-bit 乌班图环境,推荐使用 14.04 is recommended.

$ 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 ccache \libgl1-mesa-dev libxml2-utils xsltproc unzip

Note: To use SELinux tools for policy analysis, also install the python-networkx package.

●安装需要安装的安装包(Ubuntu 12.04)

你可能使用Ubuntu12.04来编译安卓更旧的版本。Ubuntu 12.04
不支持主分支(master 最新版本和最近版本)

$ sudo apt-get install git gnupg flex bison gperf build-essential \zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \libgl1-mesa-dev g++-multilib mingw32 tofrodos \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

●安装要求安装包(Ubuntu 10.04 – 11.10)

不再支持Ubuntu 10.04-11.10 版本的编译,但是编译AOSP以上的旧版本可能有用

$ sudo apt-get install git gnupg flex bison gperf build-essential \zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs \x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev \libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown \libxml2-utils xsltproc

On Ubuntu 10.10:

$ sudo ln -s /usr/lib32/mesa/libGL.so.1 /usr/lib32/mesa/libGL.so

On Ubuntu 11.10:

$ sudo apt-get install libx11-dev:i386  

设置MAC OS环境

由于该童鞋买不起 MAC OS ,所以就偷个懒暂时不写这写这部分了,将来有机会再写~^(* ̄(oo) ̄)^

三、下载系统源码

安卓资源树被放在谷歌的Git 仓库中。

安装Repo

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

1.确定你的主目录(home)下有bin目录,并且bin目录变量在你的path环境变量中:

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

2.下载Repo tool,并且确保它是可执行的。

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

For version 1.17, the SHA-1 checksum for repo is ddd79b6d5a7807e911b524cb223bc3544b661c28

For version 1.19, the SHA-1 checksum for repo is 92cbad8c880f697b58ed83e348d06619f8098e6c

For version 1.20, the SHA-1 checksum for repo is e197cb48ff4ddda4d11f23940d316e323b29671c

For version 1.21, the SHA-1 checksum for repo is b8bd1804f432ecf1bab730949c82b93b0fc5fede

For version 1.22, the SHA-1 checksum for repo is da0514e484f74648a890c0467d61ca415379f791
初始化一个Repo client

初始化 Repo 客户端

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

1.创建一个存放安卓源码的空目录。如果你正在使用Mac OS,该目录必须是一个区分大小写的文件系统。你可以像下面一样对安卓文件夹进行命名:

$ mkdir WORKING_DIRECTORY
$ cd WORKING_DIRECTORY

2.配置你的用户邮箱

$ git config --global user.name "Your Name"
$ git config --global user.email "you@example.com"

3.运行 repo init 来下载最新版本的Repo。你必须为manifest文件指定一个URL,mainifest文件定义了你工作目录中将要下载安卓源码仓库。

$ repo init -u https://android.googlesource.com/platform/manifest

如果下载的是一个分支而非主目录(master),那么用-b.

$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1

如果提示无法连接到 gerrit.googlesource.com,可以编辑 ~/bin/repo,把 REPO_URL 一行替换成下面的:
REPO_URL = ‘https://gerrit-google.tuna.tsinghua.edu.cn/git-repo’ 该地址是清华大学提供的AOSP镜像
清华大学TUNA镜像https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/

A successful initialization will end with a message stating that Repo is initialized in your working directory. Your client directory should now contain a .repo directory where files such as the manifest will be kept.

下载安卓源码树

为了向你的工作目录下载安卓源码,你需要运行

$ repo sync

一、安卓系统源码下载相关推荐

  1. 安卓系统源码编译系列(六)——单独编译内置浏览器WebView教程

    原文                   http://blog.csdn.net/zhaoxy_thu/article/details/18883015             本文主要对从安卓系统 ...

  2. 安卓系统源码编译系列(一)——下载安卓系统源码教程

    最近需要编译安卓系统,咨询了一个编译过安卓系统的朋友,说是下载源码就得下载两天,于是做好了长期抗战的准备,开始了下载安卓源码的旅程.在刚开始下载时,可以参照的内容只有官方教程,于是跟着官方教程一步一步 ...

  3. 安卓系统源码编译系列(1)——下载安卓系统源码教程

    安卓系统源码编译系列(一)--下载安卓系统源码教程 最近需要编译安卓系统,咨询了一个编译过安卓系统的朋友,说是下载源码就得下载两天,于是做好了长期抗战的准备,开始了下载安卓源码的旅程.在刚开始下载时, ...

  4. 从零开始编译安卓系统源码(生成.img文件)以及安卓系统内核

    最近开始接触安卓设备,了解到安卓系统开机界面以及定制桌面需要修改系统源码,这种情况下就需要重新编译系统源码得到.img镜像文件,本篇文章记录从零开始编译安卓系统源码以及安卓系统内核的一种方式. 很感谢 ...

  5. 最新仿悬赏猫任务平台完整系统源码下载+可封装APP

    正文: 最新仿悬赏猫任务平台完整系统源码下载+可封装APP,新UI的,这前端UI没得说,很好看的. 服务器搭建环境:Linux+Centos7.0以上+宝塔,如果你是虚拟主机的话,那是无法搭建的,亲测 ...

  6. 编译安卓系统源码jack-server问题入坑,全网最全解决方法

    编译安卓系统源码jack-server入坑,全网最全解决方法 1.权限问题 2.端口占用 3.删除 TLSv1, TLSv1.1(我的最后解决办法) 1.权限问题 运行失败时进入~/.jack-ser ...

  7. java医院挂号代码_基于SSM开发的Java医院预约挂号系统 源码下载

    这是一个基于SSM开发的Java医院预约挂号系统,源码中附带主工程以及数据库文件. 目前已知Bug:因为时间预约信息是假数据,控制预约日历显示的代码在data/index.js,因为js写的有点bug ...

  8. java图书销售系统_基于springboot的小型图书销售系统 源码下载

    源码介绍 本系统采用B/S架构,服务器用的是tomcat服务器,数据库使用mysql,数据库连接池使用的是阿里开源的druid连接池,实现了前后端分离,后端框架基于spring boot整合mybat ...

  9. 最新H5口红机系统源码下载_易支付支付接口+免公众号

    最新H5口红机系统源码下载_易支付支付接口+免公众号

  10. PHP题库系统源码,PHP在线考试系统源码下载

    2019独角兽企业重金招聘Python工程师标准>>> 现有PHP题库系统源码一套,题目类型支持单选,多选,判断,问答题,多题目(共享一个背景材料)等题型,有章节练习,考试等考试形式 ...

最新文章

  1. POJ - 1459 Power Network(网络流-最大流)
  2. 听力技巧-真题代练及填空题
  3. python 根据关键字 切割pdf_用python拆分pdf
  4. day15 ( 集合框架)
  5. VBA(比较全的api中文帮助文档例如office,excel,outlook,PowerPoint等api文档)
  6. 原生PHP配置paypal支付接口成功!不用Composer!
  7. 《个人信息安全规范》会让我们的信息更安全吗?
  8. 注塑机服务器显示e011,一种注塑机工业4.0联网系统以及监控方法
  9. html ui windows 风格,5个最佳开源Metro风格(Windows UI)CSS框架
  10. oracle连接工具 DBz,[Oracle] - 性能优化工具(3) - ADDM
  11. python 服从正态分布下概率密度函数
  12. laravel维护模式 MaintenanceMode
  13. 硅麦 (PDM)转USB接口芯片
  14. HttpClient实战爬虫B站番剧
  15. 程序的可重用性的概念_可重用的Web应用程序策略:在多个位置运行同一应用程序的三种模式
  16. 关于求1~n中与m互质的数的个数(容器原理+数论分解质因子)
  17. 2010年4月12日星期一
  18. Sci-Hub 可用网址
  19. det曲线_如何画说话人识别/确认的DET曲线?
  20. ATLAS——对抗性机器学习威胁矩阵<简介>

热门文章

  1. 高校/中职大数据实验室建设方案
  2. mac 编译mysql 源码_Mac上编译MySQL源码与安装
  3. Java虚拟机(JVM)字节码指令表
  4. 电子证件照尺寸怎样裁剪?怎么把照片裁剪成2寸?
  5. 用Python【批量】生产【电子奖状】的方法请查收!
  6. 豆丁文档无需豆元直接下载
  7. python-网易云音乐搜索下载脚本
  8. 计算机程序试题答案,历年计算机软考程序设计模拟试题及答案
  9. 最新SCI影响因子发布!Nature屠榜,AI领域Top 1000期刊盘点
  10. rdkitpython | 通过反应获得断键位点与类型