如何下载Android的Google源代码
大家都知道,在https://android.googlesource.com/上有几百个项目的列表。我想在我的Windows电脑上把它们全部下载下来。根据谷歌的文档,
To install, initialize, and configure Repo:
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
To clone the entire platform, install repo, and run:
mkdir mydroid
cd mydroid
repo init -u https://android.googlesource.com/platform/manifest
repo sync
但是在我的电脑上,我在Git Bash里无法执行“repo init”,因为它提示没有找到Python。我虽然安装了Python,但Git Bash却不识别它。注意,我已经把Python的目录添加到系统路径里了。如果有人能给我一些建议,我会非常感激。谢谢!
更新:我觉得这是Windows上Git Bash新版本的问题。系统路径根本没有在Git Bash中生效——我可以很容易地在命令提示符下测试系统路径是否有效。无论如何,我尝试了其他方法,结果当然是出现了错误。
/c/python27/python.exe ../bin/repo init -u https://android.googlesource.com/platform/manifest
错误信息是
$ /c/python27/python.exe ../bin/repo init -u https://android.googlesource.com/platform/manifest
Traceback (most recent call last):
File "../bin/repo", line 91, in <module>
import readline
ImportError: No module named readline
好的。我通过在Windows上安装pyreadline解决了这个错误:
easy_install pyreadline
如果你遇到错误,你必须从这里安装setuptools
http://pypi.python.org/pypi/setuptools#files
最后再次运行命令,得到了这个结果:
$ repo init -u https://android.googlesource.com/platform/manifest
fatal: unable to start d:\mywork\dev\GoogleAndroid\working_dir\.repo\repo/main.py
fatal: [Errno 8] Exec format error
3 个回答
这个回答讲的是如何解决这个错误:
fatal: unable to start c:\path\.repo\repo/main.py
fatal: [Errno 8] Exec format error
总结:我最后使用了Cygwin打包的python
。
详细信息:下面是完整的故事。
来自repo错误追踪的建议是添加'/c/app/Python27/python '
:
- 在v1.20的第136行
REPO_MAIN = '/c/app/Python27/python ' + S_repo + '/main.py'
- 在v1.20的第735行(
main
函数的开始)
wrapper_path = '/c/app/Python27/python ' + os.path.abspath(__file__)
但是我们遇到了错误TypeError: coercing to Unicode: need string or buffer, NoneType found
因此我撤销了上面的更改,并在版本1.20上进行了以下其他更改:
- 第136行,将单斜杠替换为双反斜杠:
REPO_MAIN = S_repo + '\\main.py'
- 第766行,将
python
的绝对路径作为me
的第一个元素添加:
me = ['C:\\app\\Python27\\python.exe', repo_main,
'--repo-dir=%s' % rel_repo_dir,
'--wrapper-version=%s' % ver_str,
'--wrapper-path=%s' % wrapper_path,
'--']
- 第776行,将
os.execv(repo_main, me)
替换为
os.execv('C:\\app\\Python27\\python.exe', me)
然而我们仍然遇到一个错误:
$ Traceback (most recent call last):
File "c:\path\.repo\repo\main.py", line 39, in <module>
from subcmds.version import Version
File "c:\path\.repo\repo\subcmds\__init__.py", line 36, in <module>
['%s' % name])
File "c:\path\.repo\repo\subcmds\forall.py", line 17, in <module>
import fcntl
ImportError: No module named fcntl
Python v2.7的fcntl文档说明fcntl
仅在Unix平台上可用。
我最后又撤销了所有在repo
脚本中的更改,并安装了Cygwin及其python
和git
包:这次成功了。
但是,由于Cygwin模拟的symlinks不被MSysGit识别,我们必须使用Cygwin的git
。而基于git
的图形界面(GUI)并不完全兼容Cygwin的git
...
(另见我其他的帖子)
编辑:
Cygwin可以使用本地的NTFS符号链接(只需设置CYGWIN=winsymlinks:native
并以管理员身份运行)。因此可以使用MSysGit以及任何基于它的其他图形界面 :-)
举个例子,像这个程序“sympy”,它也需要用到git bash和python。你只需要在启动git bash之前,把python添加到你的PATH环境变量里。
你可以从以下网址安装Python:
下载“Python 2.7 Windows安装程序”(或者Python 2.6或2.5),然后运行它。
把python的安装目录添加到你的系统环境变量的路径中
(我的电脑 -> 高级 -> 环境变量 -> Path -> 编辑
)。
注意,repo脚本本身也必须在路径中,正如在Android的版本控制页面中提到的:
Repo是我们在Git基础上构建的一个仓库管理工具。Repo在必要时统一多个Git仓库,负责上传到我们的版本控制系统,并自动化Android开发工作流程的部分内容。
Repo并不是要取代Git,而是为了让在Android环境中使用Git变得更简单。
repo命令是一个可执行的Python脚本,你可以把它放在你的路径中的任何地方。
只需点击一下,就可以从这里下载最新的代码,文件格式是.tar.gz
。下载链接是https://android.googlesource.com/platform/frameworks/base/+archive/master.tar.gz,你可以在core
文件夹里找到安卓的相关内容。
编辑
这里还有一个替代链接:
http://grepcode.com/project/repository.grepcode.com/java/ext/com.google.android/android/
只需选择你需要的版本,然后就可以在里面找到下载选项。