打造自己的Android源码学习环境之四:下载Android源代码[通俗易懂]

打造自己的Android源码学习环境之四:下载Android源代码[通俗易懂]打造自己的Android源码学习环境之四:下载Android源代码下载android代码的全部指导来自:http://source.android.com/source/index.html。如果你访问不了这个网址,可以看看这个链接。注意,需要同时在主机系统(HostOS)和虚拟系统(GuestOS)中配置hosts。0.安装所需软件0.1安装JDK参考:http://source.a

大家好,又见面了,我是你们的朋友全栈君。

打造自己的Android源码学习环境之四:下载Android源代码

下载android代码的全部指导来自:http://source.android.com/source/index.html
如果你访问不了这个网址,可以看看这个链接

注意,需要同时在主机系统(Host OS)和虚拟系统(Guest OS)中配置hosts。

0. 安装所需软件

0.1 安装JDK

参考: http://source.android.com/source/initializing.html

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

0.2 安装必要的软件包

参考: http://source.android.com/source/initializing.html

$ 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

0.3 安装Repo

参考: http://source.android.com/source/downloading.html

$ mkdir ~/bin
$ vim .bashrc

在.bashrc中添加PATH=~/bin:$PATH
然后使设置生效:

$ . ~/.bashrc

下载repo:

$ curl https://storage.proxy.ustclug.org/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo

1. 下载Android源代码

1.1 创建目录,存放代码用

$ mkdir android
$ cd android/

1.2 配置git

$ git config --global user.name "galian"
$ git config --global user.email "xxx@yyy.com"
$ git config -l
user.name=galian
user.email=xxx@yyy.com

1.3 查询Branch

参考: http://source.android.com/source/build-numbers.html#source-code-tags-and-builds

这里写图片描述

准备下载android-7.1.1_r13分支对应的代码。

1.4 repo init

repo init -u https://android.googlesource.com/platform/manifest -b android-7.1.1_r13

一些log信息,如下:

$ repo init -u https://android.googlesource.com/platform/manifest -b android-7.1.1_r13
Get https://gerrit.googlesource.com/git-repo/clone.bundle
Get https://gerrit.googlesource.com/git-repo
Get https://android.googlesource.com/platform/manifest
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
curl: (22) The requested URL returned error: 404 Not Found
Server does not provide clone.bundle; ignoring.
remote: Counting objects: 410, done        
remote: Total 4566 (delta 1251), reused 4566 (delta 1251)        
接收对象中: 100% (4566/4566), 3.00 MiB | 2.60 MiB/s, 完成.
处理 delta 中: 100% (1251/1251), 完成.
来自 https://android.googlesource.com/platform/manifest
 * [新分支]          adt_23.0.3 -> origin/adt_23.0.3
 * [新分支]          afw-test-harness-1.5 -> origin/afw-test-harness-1.5
 * [新分支]          afw-test-harness-2.1 -> origin/afw-test-harness-2.1
 * [新分支]          afw-test-harness-marshmallow-dev -> origin/afw-test-harness-marshmallow-dev
 * [新分支]          afw-test-harness-nougat-dev -> origin/afw-test-harness-nougat-dev
 * [新分支]          android-1.6_r1 -> origin/android-1.6_r1
 * [新分支]          android-1.6_r1.1 -> origin/android-1.6_r1.1
 * [新分支]          android-1.6_r1.2 -> origin/android-1.6_r1.2

(省略)

 * [新分支]          android-7.0.0_r24 -> origin/android-7.0.0_r24
 * [新分支]          android-7.0.0_r27 -> origin/android-7.0.0_r27
 * [新分支]          android-7.0.0_r3 -> origin/android-7.0.0_r3
 * [新分支]          android-7.0.0_r4 -> origin/android-7.0.0_r4
 * [新分支]          android-7.0.0_r5 -> origin/android-7.0.0_r5
 * [新分支]          android-7.0.0_r6 -> origin/android-7.0.0_r6
 * [新分支]          android-7.0.0_r7 -> origin/android-7.0.0_r7
 * [新分支]          android-7.1.0_r1 -> origin/android-7.1.0_r1
 * [新分支]          android-7.1.0_r2 -> origin/android-7.1.0_r2
 * [新分支]          android-7.1.0_r3 -> origin/android-7.1.0_r3
 * [新分支]          android-7.1.0_r4 -> origin/android-7.1.0_r4
 * [新分支]          android-7.1.0_r5 -> origin/android-7.1.0_r5
 * [新分支]          android-7.1.0_r6 -> origin/android-7.1.0_r6
 * [新分支]          android-7.1.0_r7 -> origin/android-7.1.0_r7
 * [新分支]          android-7.1.1_r1 -> origin/android-7.1.1_r1
 * [新分支]          android-7.1.1_r10 -> origin/android-7.1.1_r10
 * [新分支]          android-7.1.1_r11 -> origin/android-7.1.1_r11
 * [新分支]          android-7.1.1_r12 -> origin/android-7.1.1_r12
 * [新分支]          android-7.1.1_r13 -> origin/android-7.1.1_r13

(省略)

Your identity is: galian <xxx@yyy.com>
If you want to change this, please re-run 'repo init' with --config-name

Testing colorized output (for 'repo diff', 'repo status'):
  black    red      green    yellow   blue     magenta   cyan     white 
  bold     dim      ul       reverse 
Enable color display in this user account (y/N)? Y

repo has been initialized in /home/galian/android

1.5 开始下载代码

$ repo sync

大概需要5~6个小时可以下载完成。

注意:为了确保全下载下来,再多执行一次repo sync

android 7.0.1r13的代码大概54GB,其中.repo目录34GB。除去.repo目录,代码大概20GB左右。

2. 可能出现的问题

2.1 Network is unreachable

$ repo init -u https://android.googlesource.com/platform/manifest -b android-7.1.1_r13 gpg: keyring `/home/galian/.repoconfig/gnupg/secring.gpg' created gpg: keyring `/home/galian/.repoconfig/gnupg/pubring.gpg' created gpg: /home/galian/.repoconfig/gnupg/trustdb.gpg: trustdb created
gpg: key 920F5C65: public key "Repo Maintainer <repo@android.kernel.org>" imported
gpg: key 692B382C: public key "Conley Owens <cco3@android.com>" imported
gpg: Total number processed: 2
gpg:               imported: 2  (RSA: 1)

fatal: Cannot get https://gerrit.googlesource.com/git-repo/clone.bundle fatal: error [Errno 101] Network is unreachable

解决方法:
参考这个链接

$ sudo vim /etc/hosts

修改hosts文件后,执行

sudo apt-get install nscd
sudo /etc/init.d/nscd restart

2.2 unable to auto-detect email address

*** Please tell me who you are.

Run

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

to set your account's default identity.
Omit --global to set the identity only in this repository.

fatal: unable to auto-detect email address (got 'galian@galian-VirtualBox.(none)')

解决方法:

$ git config --global user.name "your_name"
$ git config --global user.email "xxx@yyy.com"

替换your_namexxx@yyy.com为你自己的信息。

3. 参考

(1) http://source.android.com/source/index.html
(2) http://source.android.com/source/initializing.html
(3) http://source.android.com/source/downloading.html
(4) http://source.android.com/source/build-numbers.html#source-code-tags-and-builds

———————– 分 割 线 ———————–
本系列文章如下:

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/134985.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月3日 上午10:20
下一篇 2022年5月3日 上午10:40


相关推荐

  • php中如何判断目录是否存在文件_PHP如何判断文件、目录是否存在

    php中如何判断目录是否存在文件_PHP如何判断文件、目录是否存在PHP 中判断目录或者文件是否存在经常会用到的 is file is dir file exists 这三个函数 本文将为大家介绍这三个函数如何去用 1 is file 函数 用来判断文件是否存在 代码如下 if is file test html echo 文件不存在 else echo 文件存在 gt 2 is dir 函数 用来判断目录是否存在 代码

    2026年3月17日
    2
  • Unity3D制作3维立体小游戏

    Unity3D制作3维立体小游戏Unity3D报告,纯属个人兴趣

    2022年5月9日
    75
  • js面试题 高频 含答案

    js面试题 高频 含答案1 讲一下 var let const 的区别 var 声明的变量有变量提升的特性 而 let const 没有 var 声明的变量会挂载到 windows 对象上 所以使用 var 声明的是全局变量 而 let 和 const 声明的变量是局部变量 块级作用域外不能访问同一作用域下 let 和 const 不能重复声明同名变量 而 var 可以 const 声明的是常量 必须赋初值 一旦声明不能再次赋值修改 如果声明的是复合类型数据 可以修改其属性 2 js 中的基础数据类型有哪

    2026年3月27日
    2
  • 一文读懂联邦学习的前世今生(建议收藏)

    一文读懂联邦学习的前世今生(建议收藏)前言联邦学习 FederatedLea 作为人工智能的一个新分支 为机器学习的新时代打开了大门 如果投票问人工智能和大数据应用领域有什么好玩又好用的新技术 联邦学习 一定是排在前列的 这项技术由谷歌在 2016 年首次提出 从 2018 年 8 月开始在国内快速发展和普及 截至 2020 年 2 月 有公开资料可查的联邦学习研究或应用单位已超过百家 阿里 微众 京东 腾讯 华为 平安等各领域的头部企业均在大力推进 身边做技术和业务的朋友都在说 忽如一夜春风来 联邦学习突然就在圈子里传播了 在聊天中不发表点联邦

    2026年3月18日
    2
  • python服务器运维步骤_python运维服务器

    python服务器运维步骤_python运维服务器好久没有写东西了.一直做服务器开发需要写一些脚本来控制服务器的启动.本来Windows自带了任务计划,但不是特别方便,还是用python写了一下.需求:在固定的时间启动服务器先看源代码:defstart_process(date):cwd=os.getcwd();globallist_threads;globaliskill;iskill=False;foriinrange(n…

    2022年7月12日
    16
  • Android开发之AOP编程

    Android开发之AOP编程

    2021年7月8日
    97

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号