如何下载Android的Google源代码

6 投票
3 回答
9217 浏览
提问于 2025-04-16 23:31

大家都知道,在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 个回答

1

这个回答讲的是如何解决这个错误:

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及其pythongit包:这次成功了。

但是,由于Cygwin模拟的symlinks不被MSysGit识别,我们必须使用Cygwin的git。而基于git的图形界面(GUI)并不完全兼容Cygwin的git...

(另见我其他的帖子)

编辑:
Cygwin可以使用本地的NTFS符号链接(只需设置CYGWIN=winsymlinks:native并以管理员身份运行)。因此可以使用MSysGit以及任何基于它的其他图形界面 :-)

1

举个例子,像这个程序“sympy”,它也需要用到git bash和python。你只需要在启动git bash之前,把python添加到你的PATH环境变量里。

你可以从以下网址安装Python:

http://python.org/download/

下载“Python 2.7 Windows安装程序”(或者Python 2.6或2.5),然后运行它。
把python的安装目录添加到你的系统环境变量的路径中
我的电脑 -> 高级 -> 环境变量 -> Path -> 编辑)。

注意,repo脚本本身也必须在路径中,正如在Android的版本控制页面中提到的:

Repo是我们在Git基础上构建的一个仓库管理工具。Repo在必要时统一多个Git仓库,负责上传到我们的版本控制系统,并自动化Android开发工作流程的部分内容。
Repo并不是要取代Git,而是为了让在Android环境中使用Git变得更简单。
repo命令是一个可执行的Python脚本,你可以把它放在你的路径中的任何地方。

8

只需点击一下,就可以从这里下载最新的代码,文件格式是.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/

只需选择你需要的版本,然后就可以在里面找到下载选项。

撰写回答