无关紧要的大文件"/>
下载Android源码时过滤掉无关紧要的大文件
在下载Android源码的时候,会遇到一些特别大的文件,而实际上这些文件无助于我们分析源码。此时,可以修改下载脚本,把某些git库过滤掉。
下面是下载过程中的一个截图:
在下载device的一个示例的时候,manta是1G多,这并不涉及源码分析。为此,可以立即终止下载过程,修改下载的python脚本,把/device/samsung/manta.git过滤掉。
对应的python脚本如下。首先是一个过滤函数:
def ignore_git(cmd):ignore_list = ["/device/lge/mako-kernel.git", "/device/samsung/manta.git"]for i in ignore_list:if cmd.find(i) == -1:continueelse:print "Ignored: ", cmdreturn Truereturn False
然后修改下载代码(最后两句):
for node in root.getElementsByTagName("project"): os.chdir(rootdir) d = node.getAttribute("path") last = d.rfind("/") if last != -1: d = rootdir + "/" + d[:last] if not os.path.exists(d): os.makedirs(d) os.chdir(d) cmd = prefix + node.getAttribute("name") + suffixprint cmdif not ignore_git(cmd):call(cmd, shell=True)
有时候第一次下载或者对源码库不熟悉的时候,无法使用上述方法,因为可能把真正有用的代码给过滤掉了。因此以上方法适合于对Android熟悉、或者之前本地已经下载过源码,知道哪些地方无关紧要。
另外一种下载的方法,是仅仅下载自己需要分析的代码对应的git库:
- 也是基于前面的脚本,第一步把cmd全吧打印出来,重定向到一个文件中,如 ./download_android_source_code.py > download_android_source_code_commands.txt
- 然后这个文件就是所有的git库;
- 找到自己感兴趣的库,比如 /system/core,对应的git库是:git clone .git
- 和上面ignore相反,写一个需要下载的列表,仅仅这个列表中的git才执行call()语句。
因为整个源码有几十G,全部下载都是以小时计算。因此上述方法可以快速下载所需要的分析,以满足工作和学习的需要。
再补充一点,有时候下载时间长之后,会自动停止。此时可能最后停止下载的git不完整,为此,直接去文件系统中删除对应的目录,然后重新执行./download_android_source_code.py脚本。——已经下载过的会自动跳过。
更多推荐
下载Android源码时过滤掉无关紧要的大文件
发布评论