代码改变世界

windows下调试android源代码

2012-02-10 17:03  BAsil  阅读(3226)  评论(6编辑  收藏  举报

android开发中,因为网上的资料较少,查看android源代码很有必要,那我们怎么才能在android开发中调试android源代码呢?经过笔者的不断尝试,给出了windows下调试android源代码的方案,此方案只是临时替代方案,稍显繁琐,还是希望官方能早点给出调试android源代码的解决方案。

    本文参考了William Hua把Android源代码加入SDK(Updated)以及Eric BurkeBrowsing Android Source in Eclipse

一.配置环境

笔记本:Thinkpad T400 Intel Core 2 Duo P8400 2.26GHz

内存:6GB DDR3

OS : Window 7 Professional 64

Eclipse : Indigo (Java EE)

二 下载Android源代码

这里提醒一下,window下无法使用repo(因为Android是由kernel、Dalvik、Bionic、prebuilt、build等多个Git项目组成,所以Android项目编写了一个名为Repo的Python的脚本来统一管理这些项目的仓库,使得Git的使用更加简单 引自syles发布,新手扫盲贴之一什么是GIT和REPO),所以推荐使用ubuntu或者macox下载Android源代码,我就是把我在Mac OS 10.6(Snow Leopard)编译Android源代码一文中下载的源代码拷贝到window中。当然,window中下载Android源代码也不是不可以,不过需要使用git命令独立的下载每个git包,或者参考网上的批处理文件(我担心由于android版本的升级,会导致批处理文件失效,未尝试,也请有经验的网友指点)。

三 关联Android源代码

由于Android Eclipse plugin (ADT)不允许我们在项目属性中attach源代码到android.jar上,好在Eric Burke找到了把source加入到SDK中的办法,通过分析ADT的源代码我们知道ADT是从SDK目录下的“sources”目录来查找class对应的源代码,这样我们只要把源代码放到sources目录中ADT就可以自动找到对应的源代码了。

另外Android源代码包含在不同的目录中,而放到sources文件夹下的源代码应该按照包名以文件夹的形式组织,好在William Hua写了一个py脚本,不过我在使用这个py脚本的时候碰到了一些问题,自己改了一下。

主要问题是,在生成文件时报gbk codec错误

gbkerror

估计有几个文件里有特殊的字符,造成py脚本中断退出,这里我用了个笨办法,吃掉UnicodeDecodeError异常,这样保证py脚本会生成所有的java文件,除了(产生UnicodeDecodeError的文件,我用的是2.3.3 gingerbread版本,应该有3-4个有问题的java,暂时用不到,不管他)

with open(source) as f:
      try:
       for line in f:
        match = re.match(r'\s*package\s+([a-zA-Z0-9\._]+);', line)
        if match:
          package_path = match.group(1).replace('.', os.sep)
          try:
            os.makedirs(os.path.join(sources, package_path))
          except os.error:
            pass
          destination = os.path.join(sources, package_path, filename)
          if destination not in written:
            written[destination] = True
            shutil.copy(source, destination)
          break
      except UnicodeDecodeError:
        print(source)

另外我用的是python 3.1.1,需要把原有py脚本的print命令加上括号,python我是新手,自己摸索的

使用方法

fix_android_sdk.py < android-source > < android-sdk >

比如我的<android-source>是 c:\android   <android-sdk>是 c:\android\android-sdk

则写法应该是 fix_android_sdk.py c:\\android  c:\\android\\android-sdk

最后在eclipse中Java Source Attachment中指向生成的路径

androidbuildpath

最后我们即可在eclipse中看到源代码

activitysource

修改后的fix_android_sdk.py下载地址