惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Y
Y Combinator Blog
V
V2EX
Jina AI
Jina AI
爱范儿
爱范儿
M
MIT News - Artificial intelligence
量子位
L
LangChain Blog
Google DeepMind News
Google DeepMind News
酷 壳 – CoolShell
酷 壳 – CoolShell
罗磊的独立博客
腾讯CDC
MongoDB | Blog
MongoDB | Blog
P
Proofpoint News Feed
宝玉的分享
宝玉的分享
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Last Week in AI
Last Week in AI
H
Hackread – Cybersecurity News, Data Breaches, AI and More
F
Fortinet All Blogs
The GitHub Blog
The GitHub Blog
Engineering at Meta
Engineering at Meta
博客园 - 聂微东
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Vercel News
Vercel News
T
The Blog of Author Tim Ferriss

博客园 - BAsil

ubuntu下安装git server以及eclipse egit插件配置 Mac OS 10.6(Snow Leopard)编译Android源代码 使用Mono Runtime Bundle制作安装包让C#桌面应用程序脱离net framework c++对象成员函数返回自身引用时出现的诡异问题及解决办法 C++指针存储结构 重构一个贪吃蛇游戏(linux c++) Ubuntu 9.10 Server 配置Apache + WebDav 实现文档协同管理 javascript事件机制与jQuery.bind的补充说明 javascript 事件机制 与 jQuery.Bind Ubuntu 9.10 Server 配置基于SSL的Subversion Ubuntu 9.10 Server (Karmic) 迁移Bugzilla 域环境下配置连接sql server 的asp.net网站 注意IIS 7.0的集成管道模式下HttpApplication 请求管道事件的问题 出现Unable to launch Visual Studio's Localhost Web Server问题解决 基于TCP的网络游戏黑白棋系列(四):游戏棋盘 基于TCP的网络游戏黑白棋系列(三):游戏大厅 基于TCP的网络游戏黑白棋系列(二):数据传输 基于TCP的网络游戏黑白棋系列(一):建立连接 基于TCP的网络游戏黑白棋系列教程开篇
windows下调试android源代码
BAsil · 2012-02-10 · via 博客园 - BAsil

2012-02-10 17:03  BAsil  阅读(3271)  评论()    收藏  举报

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下载地址