首先说明。随着最近(2014年6月開始)GFW的升级。这个站点:http://www.android.com/ 已经不能正常訪问了,以下的这些操作均是在我连接VPN的时候进行的。

首先,须要做一些准备工作:据这里(http://source.android.com/source/initializing.html)介绍。Mac
OS中文件系统的特点是:case-preserving but case-insensitive。也就是保留大写和小写,但对大写和小写不敏感。这样会给兴许执行一些命令带来非常多麻烦,所以他们强烈建议新建一个大写和小写敏感的文件系统,这一点能够通过磁盘映像非常easy地实现:

在Launchpad中——其它——磁盘工具。点开之后在左上角点击“文件”——“新建”——“空白磁盘映像”。然后如图所看到的,官方建议磁盘映像的大小应该在25GB以上。

在建立好磁盘映像之后,须要每次都去挂载它,比較麻烦,所以官方也建议在:~/.bash_profile中添加这样一条:(简介一下,~表示从用户文件夹開始。所以以下这条语句中attach的dmg镜像也指的是用户文件夹。

假设大家对vim之类不太熟。能够直接执行:open
-e ~/.bash_profile 来打开上面这个文件,当然,不提倡这样做)

# mount the android file image
function mountAndroid { hdiutil attach ~/android.dmg -mountpoint /Volumes/android; }

这样我们在每次挂载的时候。仅仅须要输入:mountAndroid就能够了。上面那个页面的剩余部分。介绍了一些假设希望build 4.2.X之前版本号须要做的工作,假设仅仅是想下载或build最新版本号,能够直接跳过,转而參考这个页面:http://source.android.com/source/downloading.html 。接下来依照这个页面的介绍,一步步做就能够了。简单总结一下:

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

以上这两条命令是在用户根文件夹下建立一个bin文件夹。

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

以上这两条命令是将repo tool复制到刚才新建的bin文件夹下。

在完毕这两步之后,我们须要挂载刚才建映像。而且进入到映像中,对于刚才的配置,就进入以下这个映像:

$ cd /Volumes/android

然后在这里建一个文件夹:

$ mkdir WORKING_DIRECTORY
$ cd WORKING_DIRECTORY

建立文件夹并进入之后,就能够下载Android源代码了:

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

这条命令同一时候对repo进行初始化,并指定Android源代码的repository。

最后须要输入:

$ repo sync

以将源代码同步到本地。须要指出的是。即便是有VPN等工具,在下载过程中可能依旧非常不稳定,会多次报错或退出,这时使用repo sync能够继续下载,可是每次手动输入比較麻烦。所以非常多教程都强烈建议大家写一个bash脚本自己主动重新启动下载:

#!/bin/bash
repo sync
while [ $? = 1 ]; do
echo "================sync failed, re-sync again ====="
sleep 3
repo sync
done

复制上面代码保存到刚才的源代码文件夹(WORKING_DIRECTORY)里。

如:download.sh,在终端中执行该脚本,然后就能够等待其下载完了。另外,repo在下载过程中。在文件夹下是看不到不论什么文件的。下载完毕之后会看到build等文件夹。

这就是一点经验,非常多朋友也总结了如何通过国内能訪问的镜像网站下载的经验。这一点我以后有机会也会总结一下。

----------------------------------

(2014年7月12日更新)

没想到依照上面的流程下载,还是出现了问题,这里总结一下。今天早上起来一看,居然把30GB的磁盘映像空间占满了!(我的Mac上空间确实不多了。256GB的固态硬盘。根本不够用啊)。于是乎设置了一下隐藏目录显示:

$ defaults write com.apple.finder AppleShowAllFiles -bool true
$ KillAll Finder

删除以后又一次開始。自己想了一下,这次选择下载某一个版本号,Android的分支列表能够參看这个链接:https://android.googlesource.com/platform/manifest/+refs

我把上面说的download.sh改成了例如以下所看到的:

#!/bin/bash
PATH=~/bin:$PATH
repo init -u https://android.googlesource.com/platform/manifest -b android-4.2.2_r1
repo sync
while [ $? = 1 ]; do
echo "================sync failed, re-sync again ====="
sleep 3
repo sync
done

然后又一次開始下载。经过漫长时间以后。似乎最终下载好了,细致看了一下。这次一共同拥有20GB左右。

准备再试试其它branch。更新一下,以免误导大家。

在Mac OS X中下载Android源代码的一些经验的更多相关文章

  1. Mac下命令行下载android源代码并构建apk过程

    前提是java .sdk.ndk .cmake.gradle .gradlew都已经安装和配置好. 1.下载源码: git clone http://git-ma.xxxx.com.cn/xxxx/x ...

  2. 在Mac OS X中使用VIM开发STM32(1)

       本文原创于http://www.cnblogs.com/humaoxiao,非法转载者请自重!     在我先前的博文⎣在Mac OS X中搭建STM32开发环境⎤中,我们在Mac中DIY出了最 ...

  3. 在Mac OS X下安装Android Studio

    在Mac OS X下安装Android Studio只需要几步. 1. 下载Android Studio安装包(.dmg). 2. 打开Terminal输入java -version命令查看是否已安装 ...

  4. windows平台下载android源代码

    最近观看<android核心分析>,所以很多细节都没有详细看代码很难理解.请记住,印象不深.感觉是最好再一起去的源代码,返回下载android源代码,遇到了许多问题,最后开始下载.合并流程 ...

  5. 在Mac OS X中完善PHP环境:memcache、mcrypt、igbinary

    本文环境: Mac OS X 10.8.5 Xcode 5.0 Mac OS X升级到10.8.5之后,内置的Apache升级到2.2.24,PHP升级到了5.3.26.本文以此环境为基础. 本文简介 ...

  6. Mac OS X下搭建Android开发环境(包括SDK和NDK)

    资源准备:  JDK Eclipse Android SDK Android NDK ADT CDT ANT 搭建Android SDK开发环境: 1.JDK安装,要求版本>1.5, Mac O ...

  7. Mac OS X 中一些常用的命令行技巧

    一.网络设置相关 1.网卡的物理地址的动态重置 出于某些需求,例如网络中的 IP 地址或网络帐号与网卡物理地址绑定,使得多个设备无法切换上网,可尝试临时更改物理地址.不过,系统偏好设置是不能修改网卡物 ...

  8. 在Mac OS X中配置Apache + PHP + MySQL

    在Mac OS X中配置Apache + PHP + MySQL Mac OS X 内置Apache 和 PHP,使用起来非常方便.本文以Mac OS X 10.6.3和为例.主要内容包括: 启动Ap ...

  9. 在Mac OS X中使用VIM开发STM32(2)

    本文原创于http://www.cnblogs.com/humaoxiao,非法转载者请自重! 在我先前的博文⎣在Mac OS X中使用VIM开发STM32(1)⎤中,我们安装完成了MACVIM,这一 ...

随机推荐

  1. 地精部落(bzoj 1925)

    Description 传说很久以前,大地上居住着一种神秘的生物:地精. 地精喜欢住在连绵不绝的山脉中.具体地说,一座长度为 N 的山脉 H可分 为从左到右的 N 段,每段有一个独一无二的高度 Hi, ...

  2. [ARC082F] Sandglass(线段树)

    Description 有一个沙漏由两个上下相通玻璃球 \(A\) 和 \(B\) 构成,这两个玻璃球都含有一定量的沙子,我们暂且假定 \(AB\) 中位于上方的玻璃球的为 \(U\),下方的玻璃球为 ...

  3. LOJ#2131. 「NOI2015」寿司晚宴

    $n \leq 500$,$2-n$这些数字,两个人挑,可以重复挑,问有几种方案中,一个人选的所有数字与另一个人选的所有数字都互质. 不像前两题那么抠脚.. 如果$n$比较小的话,可以把两个人选的数字 ...

  4. 各种版本QT下载地址与VS2013+QT5.3.1环境搭建过程(转)

    原文转自 http://blog.csdn.net/baidu_34678439/article/details/54586058 1. 所有Qt版本下载地址: http://download.qt. ...

  5. 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---52

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:

  6. Django笔记:常见故障排除

    Django框架下MySQLdb模块在python3中无法使用的问题的解决方案 由于python3环境下目前还没有官方的mysqldb模块,Django框架中又强制要求使用mysqldb,为了解决这个 ...

  7. HDU5006 Resistance(高斯消元)

    给你一个复杂的网路图,然后告诉你s,t,求s,t的等效电阻.方法是设s的电势为1,t的电势为0.然后对于其它的每个点x,满足的是sigma(ux-uy)/R(x,y)(即对每个与x相连的节点y,电势差 ...

  8. Light oj 1044 - Palindrome Partitioning(区间dp)

    题目链接:http://lightoj.com/volume_showproblem.php?problem=1044 dp[i][j]表示i到j直接的最小回文区间个数,直接看代码 #include ...

  9. python 设计模式之MVC模式

    一.简单介绍 mvc模式  the  model-view-controller pattern mvc模式是一个运用在软件工程中的设计模式.mvc模式脱离了以前简单的web服务设计逻辑,将开发,测试 ...

  10. 获取元素位置信息和所占空间大小(via:js&jquery)

    工作中有一个很常见的需求,hover或者click某元素后,在该元素旁边出现弹框,主要就是获取该元素的位置坐标以及元素所占区块的大小.最近工作中就遇到了,发现js和jquery的实现方法有很大的区别, ...