如何使用repo下载部分Android源码并保持项目结构
2016-11-01 22:51
489 查看
最近打算重新折腾下Android源码,由于网速慢和Mac的SSD磁盘空间不太够的原因,打算只下载部分想研究的Android源码看看,但又想保留android源码本身的结构,因此不能直接clone github上的android源码项目。目前android 7.0源码完整下载估计在40G左右,如果翻墙下载网速比较慢,可能几天都下不好,也就不要折腾了。
在分析了.repo目录下面的文件之后,我找到一个简单的方法,可以只下载部分源码的git项目,现在安卓源码一共由500多个git项目组成,一个人想了解全部源码基本上是不可能的,只能研究下重要的或者是工作涉及的部分。
由于是Mac上,需要按照官方的说明做些准备工作,具体参考http://source.android.com/source/initializing.html#setting-up-a-mac-os-x-build-environment
,具体做法如下:
修改~/.bash_profile,加入2个函数
运行
因为本文不涉及到编译源码,所以编译环境相关但步骤就不介绍了,官方文档挺详细的。
下面介绍下repo吧
repo是什么?
repo是一种代码版本管理工具,它是由一系列的Python脚本组成,封装了一系列的Git命令,用来统一管理多个Git仓库。
为什么要用repo?
因为Android源码引用了很多开源项目,每一个子项目都是一个Git仓库,每个Git仓库都有很多分支版本,为了方便统一管理各个子项目的Git仓库,需要一个上层工具批量进行处理,因此repo诞生。
最后重点到了,看下.repo/manifests/default.xml文件,内容大概如下
看到了吧,只要把不需要下载的源码project注释掉,然后运行repo sync就可以只下载没有被注释掉的项目了。当然这种办法只能用了研究源码,如果要编译源码,只下载一部分肯定是不行的。
repo sync后的项目结构如下:
这样我们就实现了用repo sync只下载想要的安卓源码项目的目的。
在分析了.repo目录下面的文件之后,我找到一个简单的方法,可以只下载部分源码的git项目,现在安卓源码一共由500多个git项目组成,一个人想了解全部源码基本上是不可能的,只能研究下重要的或者是工作涉及的部分。
由于是Mac上,需要按照官方的说明做些准备工作,具体参考http://source.android.com/source/initializing.html#setting-up-a-mac-os-x-build-environment
,具体做法如下:
# 创建一个大小写敏感的磁盘镜像文件 hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 40g ~/android.dmg
修改~/.bash_profile,加入2个函数
# mount the android file image function mountAndroid { hdiutil attach ~/android.dmg -mountpoint /Volumes/android; } # unmount the android file image function umountAndroid() { hdiutil detach /Volumes/android; }
运行
source ~/.bash_profile mountAndroid #挂载磁盘镜像到/Volumes/android cd /Volumes/android
因为本文不涉及到编译源码,所以编译环境相关但步骤就不介绍了,官方文档挺详细的。
下面介绍下repo吧
repo是什么?
repo是一种代码版本管理工具,它是由一系列的Python脚本组成,封装了一系列的Git命令,用来统一管理多个Git仓库。
为什么要用repo?
因为Android源码引用了很多开源项目,每一个子项目都是一个Git仓库,每个Git仓库都有很多分支版本,为了方便统一管理各个子项目的Git仓库,需要一个上层工具批量进行处理,因此repo诞生。
最后重点到了,看下.repo/manifests/default.xml文件,内容大概如下
<?xml version="1.0" encoding="UTF-8"?> <manifest> <remote name="aosp" fetch=".." /> <default revision="refs/tags/android-7.0.0_r14" remote="aosp" sync-j="4" /> <project path="build" name="platform/build" groups="pdk,tradefed" > <copyfile src="core/root.mk" dest="Makefile" /> </project> <project path="build/blueprint" name="platform/build/blueprint" groups="pdk,tradefed" /> <project path="build/kati" name="platform/build/kati" groups="pdk,tradefed" /> <!-- <project path="build/soong" name="platform/build/soong" groups="pdk,tradefed" > <linkfile src="root.bp" dest="Android.bp" /> <linkfile src="bootstrap.bash" dest="bootstrap.bash" /> </project> <project path="abi/cpp" name="platform/abi/cpp" groups="pdk" /> <project path="art" name="platform/art" groups="pdk" /> --> ...... </manifest>
看到了吧,只要把不需要下载的源码project注释掉,然后运行repo sync就可以只下载没有被注释掉的项目了。当然这种办法只能用了研究源码,如果要编译源码,只下载一部分肯定是不行的。
repo sync后的项目结构如下:
tree -L 1 . ├── CleanSpec.mk ├── blueprint ├── buildspec.mk.default ├── core ├── envsetup.sh ├── kati ├── libs ├── target └── tools cd kati repo info . Manifest branch: refs/tags/android-7.0.0_r14 Manifest merge branch: refs/heads/android-7.0.0_r14 Manifest groups: all,-notdefault ---------------------------- Project: platform/build/kati Mount path: /Volumes/android/N/build/kati Current revision: refs/tags/android-7.0.0_r14 Local Branches: 0
这样我们就实现了用repo sync只下载想要的安卓源码项目的目的。
相关文章推荐
- 使用git下载android源码 Git和Repo扫盲——如何取得Android源代码
- [android开发中使用的小技巧]如何在项目中导入Android源码
- 已有Java/Android源码项目,如何快速理解代码结构
- 【Android源码编译】使用repo工具下载获取android源码
- 使用repo和git下载android源码 和 相关解释
- Android系统源码编译之3---下载 ---- git 和 repo 使用
- repo 使用goagent 代码下载android源码
- 如何用repo下载android源码
- 如何用repo下载android源码 (转)
- 使用repo和git下载android源码 和 相关解释
- GIT和repo使用方法:下载内核 android源码包
- 如何用repo下载android源码 - liujishen的专栏 - CSDN博客
- 如何使用 sbt 下载项目的依赖包的源码
- 使用repo下载Android源码(无需翻墙)
- 使用repo和git下载android源码 和 相关解释
- 【Android】如何使用从Github上下载的开源项目
- 编译Android源码(1) ---- 使用repo下载源代码
- Android源码下载 ---- git 和 repo 使用