源码到eclipse

Pls refer to http://stuffthathappens.com/blog/2008/11/01/browsing-android-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/2008/12/view-android-source-code-in-eclipse.html):

from __future__ import with_statement  # for Python < 2.6



import os


import re


import zipfile


# open a zip file


DST_FILE = 'sources.zip'


  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 once
written = {}


# iterate over all Java files




for 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:


            # 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()

你可能感兴趣的:(java,eclipse,linux,android,OS)