下载Android源码流程(完整版)

article/2025/8/24 17:55:48

  要在Linux环境下操作,要在Linux环境下操作,要在Linux环境下操作~~ 不要想在Windows环境下操作,因为会有各种问题。Windows环境的童鞋又不想装双系统的可以跟着下面的操作,Linux的童鞋可以直接跳过看。Mac的童鞋就略过~~~

(1)配Linux环境

  在window中配置Linux虚拟机需要以下软件

  • VirtualBox下载地址
  • Ubuntu桌面(推荐版本14.04 64位)下载地址

  先安装VirtualBox,安装过程就不再赘述,在VirtualBox主界面点击新建,设置虚拟电脑的名字;设置的内存越大越好,后面在编译Android源码的时候大有用处;需要120G(最好200G)以上的硬盘空间用来创建虚拟硬盘,创建完后双击左边框里面新建的虚拟机,会跳出选择启动盘的对话框,选择之前下载的Ubuntu镜像->启动,如图

之后就是配置Ubuntu

(2)配置下载环境

  安装完Ubuntu之后,进入Ubuntu桌面,需要配置Linux的软件环境,需要以下环境

  • openJdk1.7(Android L之后推荐使用JDK7
  • git
  • repo (Python脚本,方便使用git)
  • gcc (推荐级别4.7)

  配置jdk,打开终端,输入下面的命令行

$ sudo add-apt-repository ppa:openjdk-r/ppa
$ sudo apt-get update
$ sudo apt-get install openjdk-7-jdk  // OpenJdk 7安装:

如果不能用,可能含有多个版本,分别输入以下切换版本

$ sudo update-alternatives --config java
$ sudo update-alternatives --config javac

如图,输入对应的序列来切换

配置git

$ sudo apt-get install git

如果总是出现0% [正在等待报头],输入

$ cd /var/cache/apt
$ sudo mv archives archives-backup
$ sudo apt-get install ia32-libs 

配置repo

$ sudo apt-get install git-core curl //下载curl
$ sudo mkdir ~/bin//在绝对路径下创建bin文件,也可以指定特定的文件
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo//下载repo到bin下
$ chmod a+x ~/bin/repo //给repo可执行权限

如果提示没有权限或者bin文件夹被加锁可以输入以下命令行进行解锁

sudo chmod -R 777 路径(文件夹或文件)//授权权限

输入repo 如果显示以下则配置成功

error: repo is not installed.  Use "repo init" to install it here.

安装所需的程序包 (64位 Ubuntu 14.04及以上)

$ 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

Ubuntu14.4自带的gcc是4.8版本,为了避免出问题,可以考虑降级到4.7,该版本以上不用考虑

$ sudo apt-get install -y gcc-4.7
$ sudo apt-get install -y g++-4.7
$ cd /usr/bin
$ sudo rm gcc
$ sudo ln -s gcc-4.7 gcc
$ sudo rm g++
$ sudo ln -s g++-4.7 g++

(3)下载Android源码

  在配置好环境之后就可以下载Android源码了,考虑到墙的问题,使用国内的镜像。这里推荐清华大学开源软件镜像站
  双击刚才下载的repo文件,修改内容(就在文件前几行)

google的地址
REPO_URL = 'git://codeaurora.org/tools/repo.git'
改为清华大学的地址
REPO_URL = 'https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'

在安装的路径下(即bin文件夹里)创建一个新的文件夹用来存放源码或者输入

$ mkdir WORKING_DIRECTORY
$ cd WORKING_DIRECTORY

配置git,便于git识别用户

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

如果使用googlesource来下载源码(即没有修改repo文件),请输入

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

如果使用清华的镜像请输入

$ repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-5.1.1_r3

  关于Android版本号请参考版本号列表(需要翻墙)
  初始化成功后,系统将显示一条消息,告诉 Repo 已在工作目录中完成初始化。客户端目录中现在应包含一个 .repo 目录(隐藏文件),清单等文件将保存在该目录下。如果无法查看,点击Ctrl+H即可查看

$ repo sync//下载Android源码

完成后会提示如下内容

如果由于某些情况断网了,请再次执行即可

$ repo sync//下载Android源码

(4)验证 Git 标记

  将以下公钥加载到 GnuPG 密钥数据库中。该密钥用于签署代表各版本的带批注标记。

$ gpg --import

复制并粘贴以下密钥,然后输入 EOF (Ctrl-D) 以结束输入并处理密钥。

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.2.2 (GNU/Linux)mQGiBEnnWD4RBACt9/h4v9xnnGDou13y3dvOx6/t43LPPIxeJ8eX9WB+8LLuROSV
lFhpHawsVAcFlmi7f7jdSRF+OvtZL9ShPKdLfwBJMNkU66/TZmPewS4m782ndtw7
8tR1cXb197Ob8kOfQB3A9yk2XZ4ei4ZC3i6wVdqHLRxABdncwu5hOF9KXwCgkxMD
u4PVgChaAJzTYJ1EG+UYBIUEAJmfearb0qRAN7dEoff0FeXsEaUA6U90sEoVks0Z
wNj96SA8BL+a1OoEUUfpMhiHyLuQSftxisJxTh+2QclzDviDyaTrkANjdYY7p2cq
/HMdOY7LJlHaqtXmZxXjjtw5Uc2QG8UY8aziU3IE9nTjSwCXeJnuyvoizl9/I1S5
jU5SA/9WwIps4SC84ielIXiGWEqq6i6/sk4I9q1YemZF2XVVKnmI1F4iCMtNKsR4
MGSa1gA8s4iQbsKNWPgp7M3a51JCVCu6l/8zTpA+uUGapw4tWCp4o0dpIvDPBEa9
b/aF/ygcR8mh5hgUfpF9IpXdknOsbKCvM9lSSfRciETykZc4wrRCVGhlIEFuZHJv
aWQgT3BlbiBTb3VyY2UgUHJvamVjdCA8aW5pdGlhbC1jb250cmlidXRpb25AYW5k
cm9pZC5jb20+iGAEExECACAFAknnWD4CGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIX
gAAKCRDorT+BmrEOeNr+AJ42Xy6tEW7r3KzrJxnRX8mij9z8tgCdFfQYiHpYngkI
2t09Ed+9Bm4gmEO5Ag0ESedYRBAIAKVW1JcMBWvV/0Bo9WiByJ9WJ5swMN36/vAl
QN4mWRhfzDOk/Rosdb0csAO/l8Kz0gKQPOfObtyYjvI8JMC3rmi+LIvSUT9806Up
hisyEmmHv6U8gUb/xHLIanXGxwhYzjgeuAXVCsv+EvoPIHbY4L/KvP5x+oCJIDbk
C2b1TvVk9PryzmE4BPIQL/NtgR1oLWm/uWR9zRUFtBnE411aMAN3qnAHBBMZzKMX
LWBGWE0znfRrnczI5p49i2YZJAjyX1P2WzmScK49CV82dzLo71MnrF6fj+Udtb5+
OgTg7Cow+8PRaTkJEW5Y2JIZpnRUq0CYxAmHYX79EMKHDSThf/8AAwUIAJPWsB/M
pK+KMs/s3r6nJrnYLTfdZhtmQXimpoDMJg1zxmL8UfNUKiQZ6esoAWtDgpqt7Y7s
KZ8laHRARonte394hidZzM5nb6hQvpPjt2OlPRsyqVxw4c/KsjADtAuKW9/d8phb
N8bTyOJo856qg4oOEzKG9eeF7oaZTYBy33BTL0408sEBxiMior6b8LrZrAhkqDjA
vUXRwm/fFKgpsOysxC6xi553CxBUCH2omNV6Ka1LNMwzSp9ILz8jEGqmUtkBszwo
G1S8fXgE0Lq3cdDM/GJ4QXP/p6LiwNF99faDMTV3+2SAOGvytOX6KjKVzKOSsfJQ
hN0DlsIw8hqJc0WISQQYEQIACQUCSedYRAIbDAAKCRDorT+BmrEOeCUOAJ9qmR0l
EXzeoxcdoafxqf6gZlJZlACgkWF7wi2YLW3Oa+jv2QSTlrx4KLM=
=Wi5D
-----END PGP PUBLIC KEY BLOCK-----

导入密钥后,可以通过以下命令验证任何标记:

$ git tag -v TAG_NAME

(5)编译

  如果有童靴只是对Android源码感兴趣,可以不用编译,编译源码可以获得对应的镜像。
  注意:请确保有足够的编译时间(大约10小时左右,看电脑性能),不要手动断开,否则会有各种问题
设置编译环境

$ . build/envsetup.sh

选择编译目标,或者跳过,直接开始编译

$ lunch

开始编译

$ make //单线程编译 

或者开多线程编译(不是很稳定)

$ make -j4//这里的4是CPU核数的1或2倍,不定(最快是16或32)

在编译过程中难免会遇到许多问题,make失败或停止后,可以使用make -k 继续编译,或者make -clean 将之前编译得到的文件清除掉,再重新编译。
编译完成之后 run it !

$ emulator

如果提示 emulator:未找到命令
请重新输入

$ source build/envsetup.sh 
$ lunch 
$ emulator

之后就是等待模拟器的启动,结果如下

更多详情请看googlesource


http://chatgpt.dhexx.cn/article/5qAZanpA.shtml

相关文章

Android系统源码下载

1,ubuntu电脑 2,下载 repo 工具: mkdir ~/bin PATH~/bin:$PATH curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo chmod ax ~/bin/repo3, 建立工作目录: mkdir WORKING_DIRECTORY cd WORKING_DIRECTORY4&am…

Android系统源码_下载编译——从下载系统源码到编译系统镜像

前言 近期因工作原因,需要频繁编译、调试Android源码 ,特别是修改framework层的源码,经过不懈努力,终于可以正常调试了。 这里进行一些总结和分享。 参考文章:清华镜像之Android 镜像使用帮助、Android系统源码编译 …

下载并编译Android源码

下载编译源码 系统架构: Linux:Linux内核和驱动模块(USB Camera 蓝牙等) Libraries:提供动态库,Android运行时库、Dalvik虚拟机等,大部分是C 和C写的,可以看成是native层 Framewo…

一、安卓系统源码下载

前言:为了研究安卓系统,我们需要下载安卓源码,本篇博文参考安卓官网https://source.android.com ,对安卓系统各个版本源码的下载做出了详细解释。 一、环境要求概览 在下载编译安卓系统源码前,我们必须对各个版本安卓…

从github下载最新Android源码

今年5月底开始,谷歌彻底被墙,所有谷歌的网站都不能访问了,这次包括了android.org,googlesource.com,code.google.com。Android官方的资源不能访问,想下载Android代码当然是困难重重了。 本文就为大家解决这…

Android源码下载编译(TI)

0 前言 通过《Android源码下载 & 编译(高通)》的方法下载的源码是包含有kernel目录的(也就是包含Linux内核),然而,通过其它方法下载的源码可能并不包含kernel目录(也就是不包含Linux内核&am…

安卓系统源码、内核下载

一、下载源码 以下载源码2.3.7版本为例 环境ubuntu14.04 1、安装git sudo apt-get install git git --version //查看版本 git config --global user.name "zhangsan" //设置用户名 git config --global user.email "zhangsan163.com" //设置邮箱 git…

AOSP安卓源码下载

Android源码下载 在国内想下载Android要么科学上网,要么使用国内搭建的镜像,有清华镜像,中科大的镜像网站。这里使用清华镜像网站镜像Android源码的下载清华镜像网站地址,为啥我要写这篇笔记嘞,虽然网上有很多这方便的…

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

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

【Android】系统源码下载及编译

源码及编译 步骤 1:创建一个空目录来存放源码: mkdir aosp cd aosp步骤 2:获取最新版本的 repo 并签出 android-8.1.0_r1 分支: repo init -u https://android.googlesource.com/platform/manifest -b android-8.1.0_r1其中&am…

Android源码下载编译(高通)

0 前言 本文介绍如何下载高通平台的Android源码,然后进行编译。 相关:《Android源码下载&编译(TI)》 1 安装工具 下载Android源码需要git,repo等工具,启动repo是Google写的一个专门用于下载Android源码…

Window下载Android源码

Android 10源码下载 想要研究Android 源码的同学可以用此方法进行下载。源码从清华大学开源软件镜像站(https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/)下载。 使用Linux的同学直接参照清华镜像站提供的使用帮助(https://mirrors.tuna.tsinghua.edu…

下载安卓源码

安卓内核源码下载教程 准备环境如何选择你想要下载的版本ubuntu环境配置 准备环境 Ubuntu 18.04 安装 最好是用这个版本或者高于这个版本的,低版本的有一些环境问题可能会让你很难受我使用的是VMware Workstation 16 ProPixel 3 XL、Pixel 3、Pixel 2 XL、Pixel 2、Pixel XL、…

Android13源码下载及全编译流程

一、源码下载 1.1、配置要求 官方推荐配置请参考:https://source.android.google.cn/docs/setup/start/requirements?hlzh-cn,重点有如下几项: 1.1.1、硬件配置要求 1、内存至少 16GB,实测建议至少 32G。 2、磁盘至少 250GB&am…

Java 工厂设计模式

简介 工厂设计模式在java中有大量的应用,如spring框架,这种类型的设计模式属于创建型模式。在工厂设计模式中,创建逻辑不会对客户端暴露,可以通过一个对外接口创建所需对象。 工厂模式使用场景 需要频繁创建对象且这些对象多处…

简单工厂设计模式

简单工厂设计模式 刚开始学设计模式,犹如刚睁开眼看世界的孩子,满眼都是惊奇,原来代码的世界可以如此的精彩纷呈.当然这些都是前辈智慧的结晶.简单工厂设计模式是接触的第一个设计模式,看完后更多的是不懂和迷糊.不过相信慢慢会懂得其精髓的. 简单工厂设计模式是创建型(就是把对…

Java工厂设计模式详解

前言 工厂设计模式在开发过程中有大量的运用,不管是spring框架,还是诸多的中间件,都有着工厂设计模式的体现 比如,手机生产工厂,当提供了相关生产手机的原材料,工厂就可以按要求生产出手机 工厂模式介绍 …

Android工厂设计模式(简单工厂,工厂方法,抽象工厂,BitmapFactory简单工厂分析,Retrofit抽象工厂分析)

文章目录 创建型设计模式(简单工厂,工厂方法,抽象工厂)一.简单工厂模式引出简单工厂模式 二.工厂方法模式三.抽象工厂模式 Android源码中用到的工厂模式举例一.BitmapFactory 源码工厂模式详解(简单工厂)二.Retrofit的工厂模式(抽象工厂) 创建型设计模式…

工厂设计模式有什么用?

工厂方法是非常古老且常用的设计模式。原因主要是一个系统要运转起来一定会涉及到对象的实例化过程,如果对象的实例化分散在各种逻辑代码之间,那么就会非常零乱、难以维护,bug自然也多。 工厂方法的出现解决的就是对象创建的问题&#xff0c…

Java中的工厂设计模式

引出工厂模式 package www.java.test;interface Computer{void printComputer(); } class MacbookPro implements Computer{Overridepublic void printComputer() {System.out.println("This is a MacbookPro");} } class SurfaceBook implements Computer{Override…