文章目录

一、编译环境设置

1、如果移动硬盘需要格式化

2、创建区分大小写的磁盘映像

3、设置文件描述符数量上限

二、Android源码下载更新

(1)安装 、打开Repo

(2)替换国内清华的镜像

(3)创建源码存放目录

(4)初始化仓库

(5)同步源码树

(6)更新完成

第一天【12.05】、【15.47】,然后出现如下中断

第二天【9.10】、【14.05】,自动中断

第三天【9.05】

(7)后期我的同步源码更新快捷


Android源码的编译运行只支持Linux和Mac系统,至于Windows系统只能绕道了,或是在虚拟机上安装Linux系统也是可以的。现在经常用mac办公,于是就准备在mac上面重新下载和编译一下Android源码,以便工作研究之用。又因mac硬盘容量有限,所以下载放在移动硬盘里面,鉴于最近一直都有人问下载和编译Android源码的问题,并且我上一次写Android源码编译的文章已经是几年前在网易博客写的,于是就趁这个机会写篇文章实践并总结一下。

一、编译环境设置

主要为后面编译Android源码作准备

1、如果移动硬盘需要格式化

Mac电脑需要把移动硬盘格式化成,mac上支持的ExFAT格式,自行搜索解决!

2、创建区分大小写的磁盘映像

Mac系统默认磁盘,文件系统运行不区分大小写。Git 并不支持此类文件系统,而且此类文件系统会导致某些 Git 命令(例如 git status)的行为出现异常。因此,建议始终在区分大小写的文件系统中对 AOSP 源文件进行操作。

有两种方式可以创建磁盘映像,具体操作如下:

方式一:使用命令
由于AOSP比较大,但是我们存放在移动硬盘上,更大的空间能够更好地满足未来的需求,所以预留200G+的空间。
可以通过 shell 使用以下命令创建磁盘映像:

hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 220g /Volumes/DongZ/aosp/android.dmg

双击这个镜像,将其挂载。这样在Mac Finder中就可以看到我们刚刚的创建的镜像了。

方式二:使用mac自带的磁盘工具
打开磁盘工具

设置空间大小,警记格式标注这栏要选择Mac OS扩展(区分大小写,日志式)的卷。点击“存储”,此时会/Volumes/aosp/下会生成一个android.dmg的镜像,双击这个镜像,将其挂载。这样在Mac Finder中就可以看到我们刚刚的创建的镜像了。

3、设置文件描述符数量上限

在 Mac OS 中,可同时打开的文件描述符的默认数量上限太低,在高度并行的编译流程中,可能会超出此上限。

ulimit -S -n 2048

二、Android源码下载更新

Android 源代码树位于由 Google 托管的 Git 代码库中。Git 代码库中包含 Android 源代码的元数据,其中包括与对源代码进行的更改以及更改日期相关的元数据。下面介绍了如何下载特定 Android 代码流水线的源代码树。

(1)安装 、打开Repo

Repo 是一款工具,可让您在 Android 环境中更轻松地使用 Git。要安装 Repo,请执行以下操作:

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

mkdir ~/bin # 创建文件夹
PATH=~/bin:$PATH #设置环境变量
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo #下载repro 到/bin/repo文件里
chmod a+x ~/bin/repo # 给repo 文件权限

(2)替换国内清华的镜像

用第三方工具打开repo文件,替换国内清华的镜像

镜像连接:https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/

(3)创建源码存放目录

源码存放路径应该放在 “区分大小写的磁盘映像” 目录下,我们前面第2部已经创建。执行创建WORKING_DIRECTORY 文件夹命令:mkdir /Volumes/untitled/WORKING_DIRECTORY

因为是移动硬盘,mac执行会出错。我就手动在移动硬盘创建了!

注:不要搞错目录,不然等下完源码大概有80g左右,不方便移动,我花了3个小时左右才移到此目录中去。

(4)初始化仓库

cd /Volumes/untitled/WORKING_DIRECTORY

repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest

报:repo: command not found

解决方式,执行如下命令:

echo 'export PATH=$PATH:$HOME/bin' >> ~/.bashrc
export PATH=$PATH:$HOME/bin

要输入用户名、邮箱

解决警告:

warning: gpg (GnuPG) is not available.   warning: Installing it is strongly encouraged.

gpg不可用,并强烈建议安装。那就安装吧!(花了10多分钟)

brew install gpg

安装完 gpg后,

切换到源码目录:cd /Volumes/untitled/WORKING_DIRECTORY

再次执行初始化试试:repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest

提示说,已经有了我的信息了。进行下一步

(5)同步源码树

(以后只需执行这条命令来同步):

repo sync

curl: (22) The requested URL returned error: 404 Not Found

Server does not provide clone.bundle; ignoring.Server does not provide clone.bundle; ignoring.

可参考:curl: (22) The requested URL returned error: 404 Not Found Server does not provide clone.bundle; ig_爱折腾的华哥的博客-CSDN博客

(6)更新完成

第一天【12.05】、【15.47】,然后出现如下中断

exited sync due to fetch errors

不管此错误,继续执行:

repo sync

第二天【9.10】、【14.05】,自动中断

   

Syncing work tree 100% done,fetching projects 100% done   同步工作树100%完成,提取项目100%完成

那么这些百分比为什么没到100%,文件数还是 688-702,695-702 ?

再试试测试一下,一直执行repo sync命令

第三天【9.05】

结果经过一晚还这样,百分比没到100%,有点懵逼的感觉,如下图:

咋回事? 那就默认下载更新Android源码完成了吧。后面时不时再执行repo sync命令!

我们关键在用,估计即使没下载完成也八九不离十了,所以不要纠结这个百分比了吧!我感觉自己是不是有点强迫症了!

Android 源代码文件将位于工作目录中对应的项目名称下。下载成功后的源码目录:

(7)后期我的同步源码更新快捷

1、挂载区分大小写的磁盘映像

2、切换到源码目录:cd /Volumes/untitled/WORKING_DIRECTORY

3、执行源码更新:repo sync

参考文章

清华大学开源软件镜像站-Android 镜像使用帮助

AOSP | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

Mac 打开、编辑 .bash_profile 文件

Mac 打开、编辑 .bash_profile 文件_huxinguang002的博客-CSDN博客_bash_profile

Mac打开文件最大数限制修改

Mac打开文件最大数限制修改_Jogging-Snail的博客-CSDN博客_mac修改最大打开文件

Android源码:2、如何下载源码详解(二)(支持移动硬盘、mac)—亲测成功相关推荐

  1. android应用市场点击下载APK安装详解

    Android系统启动篇 1,<android系统启动流程简介> 2,<android init进程启动流程> 3,<android zygote进程启动流程> 4 ...

  2. 如何安装第三方站点下载的Matlab工具箱或硬件支持包,亲测有效。

    如何安装第三方站点下载的Matlab工具箱或硬件支持包,亲测有效. 背景说明 安装方法 说明 背景说明 今天给大家说一说,有时候我们下载Matlab官方的工具箱或者硬件支持包会出现下载时间过长,下载到 ...

  3. android事件传递机制以及onInterceptTouchEvent()和onTouchEvent()详解二之小秘与领导的故事...

    总结的不是很好,自己也有点看不懂,正好现在用到了,研究了一个,再次总结,方便大家查看 总则: 1.onInterceptTouchEvent中有个Intercept,这是什么意思呢?她叫拦截,你大概知 ...

  4. centos7 mysql 源码安装_CentOS7.4 源码安装MySQL8.0的教程详解

    MySQL 8 正式版 8.0.11 已发布,官方表示 MySQL 8 要比 MySQL 5.7 快 2 倍,还带来了大量的改进和更快的性能! 以下为本人2018.4.23日安装过程的记录.整个过程大 ...

  5. Mybatis源码学习(三)SqlSession详解

    前言 上一章节我们学习了SqlSessionFactory的源码,SqlSessionFactory中的方法都是围绕着SqlSession来的.,那么SqlSession又是什么东东呢?这一章节我们就 ...

  6. Caddy源码阅读(一)Run详解

    Caddy源码阅读(一)Run详解 前言 本次系列会讲解 caddy 整个生命周期涉及到的源码. 平时我们使用 caddy 都是使用 它的 二进制 分发文件,现在来分析 caddy 的 Run 函数. ...

  7. 仿抖音短视频APP源码,顶部导航栏切换详解

    仿抖音短视频APP源码,顶部导航栏切换详解的相关代码 class DaoHangNan extends StatefulWidget //继承StatefulWidget{TabController ...

  8. 干货详解|二维码防伪溯源系统在白酒行业的应用

    根据爱码物联在白酒行业的二维码质量溯源经验 爱码物联从白酒行业的赋码方式和一物一码营销 深度解读白酒市场的一体化解决方案 质量溯源系统是通过QR二维码为载体 以激光赋码或自动贴标等方式 实现白酒的防伪 ...

  9. “多源异构”和“异构同源”定义区分详解

    "多源异构"和"异构同源"定义区分详解 一.多源异构 1.定义 2.示例解释 二.异构同源 1.定义 2.示例解释 三.综合举个简单栗子: 叮嘟!这里是小啊呜的 ...

  10. Android Loader 异步加载详解二:探寻Loader内部机制

    Android Loader 异步加载详解二:探寻Loader内部机制 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/7025991 ...

最新文章

  1. linux下SublimeText的中文输入法问题之解决方案
  2. android 混淆打包教程,Android studio 混淆打包
  3. sts,eclipse里面配置tomcat
  4. JavaWeb(九)——JavaBean、Filter
  5. Rails Migration Data Model栏位修改及数据类型介绍
  6. Leetcode - Permutations I,II
  7. 如何从文件名字符串中获取文件扩展名_Linux操作系统:文件系统的功能和命名...
  8. Scala常用List列表操作方法
  9. 阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第3节 线程同步机制_4_解决线程安全问题_同步代码块...
  10. 圆排列问题详解(原理+代码)
  11. android studio for android learning (十三) 一个简单的图片查看器示例
  12. 微信小程序排行榜模板
  13. 64位 Windows PLSQL Developer客户端配置方法
  14. 矩阵乘法运算-JAVA实现
  15. simulink教程(自动控制原理)
  16. html为什么图片有的显示不出来,网页显示不出图片怎么办 6种常见的解决方案详解...
  17. Axure RP 9.0.0.3727 授权码
  18. 计算机网络自顶向下方法 第三章 作业习题答案
  19. compiler java_使用JavaCompiler编译java源文件
  20. MyBaits-Plus快速使用

热门文章

  1. 安卓搭建http服务器——NanoHttpd
  2. win10下硬盘安装ubuntu (完整版)
  3. EF 多对多关系 中间表操作
  4. mysql decimal 类型_MySQL中decimal类型用法的简单介绍
  5. 迅雷2014C++研发笔试卷C
  6. python在手机上可以画图吗_python可以画图么
  7. php图床_PHP利用百度当图床
  8. wx网罗系列之翔实:使用C++开发wxWidgets程序
  9. 笔记本AutoCAD启动时闪退怎么办_AutoCAD启动时闪退怎么办?打开AutoCAD闪退怎么办?...
  10. 开发基础 练习2总结