免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1617 | 回复: 1
打印 上一主题 下一主题

在eclipse中浏览Android源码 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-02-20 20:31 |只看该作者 |倒序浏览
在eclipse中浏览Android源码












Pls refer to http://stuffthathappens.com/blog ... -source-in-eclipse/

如果能够在eclipse中浏览Android源代码,这对提高阅读源码的效率非常有帮助。根据上面连接,下面是一个简要步骤描述:
1. 安装eclipse 3.4或3.5 (本人使用的是从http://www.eclipse.org/downloads/上下载的3.4.1。3.5版本下面有些步骤没有成功)
2. 安装Android plugin (参见sdk 文档docs/sdk/eclipse-adt.html)
3. 从源码中创建一个项目, (create a project from existing sources), 如为packages/apps/calendar
4. 安装Android源码到这个项目中。
4.1 在eclipse的Window->Preference->Android中,指定sdk location,例如xxx/android-linux-sdk_86
4.2 假设使用的sdk是1.6,则在目录xxx/android-linux-sdk_86/platforms/android-1.6/下创建sources目录
4.3 符号连接 你的源码 ln -s frameworks/base/core/java/android xxx/android-linux-sdk_86/platforms/android-1.6/sources/android
4.4 符号连接其他源码到sources目录下。注意:源码文件所放路径应该与源码文件所属Java包的名字匹配。例如,Bitmap.java属于android.graphics包,则应放于目录sources/android/graphics目录下。
4.5 如果你仍然不能浏览源码的话,可通过重新创建一个project进行刷新。这可能是我这个版本的eclipse的一个bug。
4.6,下面的script给出了如何抽取所有的java源码文件(http://blog.michael-forster.de/2 ... ode-in-eclipse.html):

  1. from __future__ import with_statement # for Python < 2.6
  2. import os
  3. import re
  4. import zipfile
  5. # open a zip file
  6. DST_FILE = 'sources.zip'
  7.   if os.path.exists(DST_FILE):
  8.   print DST_FILE, "already exists"
  9. exit(1)
  10. zip = zipfile.ZipFile(DST_FILE, 'w', zipfile.ZIP_DEFLATED)

  11. # some files are duplicated, copy them only once written = {}
  12. # iterate over all Java files

  13. for dir, subdirs, files in os.walk('.'):
  14.   for file in files:
  15.     if file.endswith('.java'):
  16.       # search package name
  17.       path = os.path.join(dir, file)
  18.       with open(path) as f:
  19.         for line in f:
  20.           match = re.match(r'\s*package\s+([a-zA-Z0-9\._]+);', line)
  21.           if match:
  22.             # copy source into the zip file using the package as path
  23.             zippath = match.group(1).replace('.', '/') + '/' + file
  24.             if zippath not in written:
  25.                written[zippath] = 1
  26.                zip.write(path, zippath)
  27.             break;
  28. zip.close()
复制代码

论坛徽章:
0
2 [报告]
发表于 2012-02-20 20:31 |只看该作者
谢谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP