下载Android源码时过滤掉无关紧要的大文件

编程入门 行业动态 更新时间:2024-10-08 05:21:50

下载Android源码时过滤掉<a href=https://www.elefans.com/category/jswz/34/1724109.html style=无关紧要的大文件"/>

下载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源码时过滤掉无关紧要的大文件

本文发布于:2024-03-09 06:09:53,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1724105.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:无关紧要   源码   大文件   过滤掉   Android

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!