最近打算玩下android,听hong老大说最好看看源码。而android官方并没有提供直接可用的。

具体参考如下:
http://www.williamhua.com/2009/04/29/git-and-repo-for-dummies/
http://blog.michael-forster.de/2008/12/view-android-source-code-in-eclipse.html

注意:在做sources.zip的时候不能是用主干来做,要切换到origin/android-sdk-1.5_r3分支下,我是这么做的

$ git checkout origin/android-sdk-1.5_r3 -b sdk1.5r3

否则在debug的时候会定位错误; 今天刚接触这东西,不熟瞎试的,好像还要在.repo/manifest/目录下能执行上面的命令

另外用mike's blog里的python抽取java源文件好像太多了,我稍微修改一下,把android.jar包里面没有的java类都去了。

在自己建的源代码根目录建get_source.py这么个文件:

Python代码
  1. from__future__importwith_statement#forPython<2.6
  2. importos
  3. importre
  4. importzipfile
  5. #openazipfile
  6. DST_FILE='sources.zip'
  7. CLASS_FILE_PATH='/home/don/desktop/android/'
  8. ifos.path.exists(DST_FILE):
  9. printDST_FILE,"alreadyexists"
  10. exit(1)
  11. zip=zipfile.ZipFile(DST_FILE,'w',zipfile.ZIP_DEFLATED)
  12. #somefilesareduplicated,copythemonlyonce
  13. written={}
  14. #iterateoverallJavafiles
  15. fordir,subdirs,filesinos.walk('.'):
  16. forfileinfiles:
  17. iffile.endswith('.java'):
  18. #searchpackagename
  19. path=os.path.join(dir,file)
  20. withopen(path)asf:
  21. forlineinf:
  22. match=re.match(r'\s*package\s+([a-zA-Z0-9\._]+);',line)
  23. ifmatchandos.path.exists(CLASS_FILE_PATH+match.group(1).replace('.','/')+'/'+file[0:-4]+'class'):
  24. #copysourceintothezipfileusingthepackageaspath
  25. zippath=match.group(1).replace('.','/')+'/'+file
  26. ifzippathnotinwritten:
  27. written[zippath]=1
  28. zip.write(path,zippath)
  29. break;
  30. zip.close()
from __future__ import with_statement  # for Python < 2.6import osimport reimport zipfile# open a zip fileDST_FILE = 'sources.zip'CLASS_FILE_PATH = '/home/don/desktop/android/'if os.path.exists(DST_FILE):  print DST_FILE, "already exists"  exit(1)zip = zipfile.ZipFile(DST_FILE, 'w', zipfile.ZIP_DEFLATED)# some files are duplicated, copy them only oncewritten = {}# iterate over all Java filesfor dir, subdirs, files in os.walk('.'):  for file in files:    if file.endswith('.java'):      # search package name      path = os.path.join(dir, file)      with open(path) as f:        for line in f:          match = re.match(r'\s*package\s+([a-zA-Z0-9\._]+);', line)          if match and os.path.exists(CLASS_FILE_PATH + match.group(1).replace('.', '/') + '/' + file[0:-4] + 'class'):            # copy source into the zip file using the package as path            zippath = match.group(1).replace('.', '/') + '/' + file            if zippath not in written:              written[zippath] = 1              zip.write(path, zippath)            break;zip.close()

对python不熟,不知道怎么读jar文件,我把android.jar解压到了桌面。运行上面代码就能生成干净的sources.zip了。

将sources.zip解压到 sdk目录下platforms/android-1.5/下即可

android-1.5下会多出一个sources文件,源文件就在里面了,重启eclipse就可以用了。

我把android1.5的源码包放附件里了,省得大家再做了。

更多相关文章

  1. Android(安卓)开发环境入门
  2. 一个APK反编译利器Apktool(android汉化)
  3. 我的hosts文件
  4. Android(安卓)开发环境的搭建
  5. 【Android】文件读写操作(含SDCard的读写)
  6. 自制android1.5的源码包
  7. Android常用命令
  8. Android学习笔记(九) Android文件读写操作
  9. NPM 和webpack 的基础使用

随机推荐

  1. Android高手进阶教程(二)之----Android(
  2. 《安卓开发必知的50个技巧》读书笔记
  3. Android音频开发(3):如何播放一帧音频
  4. 安卓新手之路——关于layout一些属性的整
  5. 教你如何在 Android(安卓)使用多线程下载
  6. Android中的Apk的加固(加壳)原理解析和实
  7. [Android(安卓)Studio系列(五)] Android(
  8. Android(安卓)2.2 源码结构分析
  9. Android之怎么使用SQLite数据库(增、删、
  10. Android(安卓)Studio 打包jar,aar