`

把Android源代码加入SDK

阅读更多

各位调试Android程序的时候遇到“source not found”错误应该很抓狂吧,Goolge在发布SDK时没有把源代码包含进去着实有点让人费解,对很多人来说Git无疑是个生涩的东西,而 framework中所有Java代码加起来打个包也就是20多MB。更要命的是,Android Eclipse plugin (ADT)不允许我们在项目属性中attach源代码到android.jar上。好在Eric Burke找到了把source加入到SDK中的办法,通过分析ADT的源代码我们知道ADT是从SDK目录下的“sources”目录来查找class对应的源代码,这样我们只要把源代码放到sources目录中ADT就可以自动找到对应的源代码了。

那么接下来的问题是,我们需要把哪些源代码加入到SDK中,我们又如何得到这些源代码呢?
我之前的文章Android Scripting Environment动手玩中提到过一个fix_android_sdk.py脚本,用来解决编译ASE的时候找不到android.os.Exec包的问题,事实上这个脚本还做了另一件事,即遍历整个< android-source >目录,把其中所有的Java代码复制到了SDK的sources目录中。ASE Wiki的CompilingASE中提到,编译ASE需要Android的代码树,而我当时告诉大家了一个取巧的方法,即只要下载frameworks/base的android- 1.5r2这个tag的snapshot就行,因为android.os.Exec包就在其中,这足已解决我们编译ASE的问题。

回到我们把源代码加入到SDK上来,有了fix_android_sdk.py脚本(这里我们并不需要把android.os.Exec包编译并添加到android.jar,所以我把脚本中的这个功能去掉了,点击下载修改后的脚本),如果你已经通过repo下载了完整的代码树(需要注意版本的对应),那么一切都很简单。按照下面的方法,把android源代码和SDK目录作为参数传给它即可。
fix_android_sdk.py < android-source > < android-sdk >
执行完成以后,在\platforms\android-1.5目录下就会生成一个sources目录,其中包含了android代码树中所有的Java代码,并且都根据包名存放各自的目录,再次Debug代码的时候ADT就可以找到相应的源代码了。

如果手上没有完整的代码树,又想快速的把源代码添加到SDK呢?看过Android的代码树就会知道,除了frameworks/base以外,还有很多framework的代码其实是在Dalvik目录下,另外还有常用的apache http的包位于external/apache-http目录下,所以要获得用于调试的比较完整的framework源代码,我们至少需要从 Android的代码库中下载platform/dalvik.gitplatform/frameworks/base.gitplatform/external/apache-http.git这三个project。把下载回来的文件解压到同一个目录下,目录结构随意,接下来利用fix_android_sdk.py脚本就可以把Java文件提取出来。用这种方法来提取framework的源代码比下载整个代码数来得快很多,而且提取的结果和从完整的代码树比较来看,仅仅是少了我们Debug时完全用不到的Android中捆绑的Application的源代码,以及jdiff、tagsoup、clearsilver等包的代码(这3个包我都没有接触过,如果各位觉得有必要,可以自行下载并按上面提到的方法来添加源代码,它们都在platform/external下)。

最后,如果你连上面这几个包也懒得下载,懒得装Python执行环境,那么Android Forum上有一个讨论Source code for android.jar的帖子正适合你,帖子的第10楼和11楼提供了提取好的Android 1.5 SDK源代码(虽然未必100%和你的SDK匹配,也总比满眼的source not found好吧),解压缩到你SDK下的sources目录即可。

 

 

William Hua原创,地址:http://www.williamhua.com/2009/06/18/add-android-sourcecode-to-the-sdk/

分享到:
评论

相关推荐

    Android-ANDROIDSDK源码解析

    android sdk 源码解析——旨在帮助Android开发者更好的学习Android!我们只是一群普通的程序员,但是,我们热爱分享,想热热闹闹的玩点有意义的事!如果你也想陪我们一起愉快的玩耍,欢迎加入我们!Issues认领分析...

    android SDK 源码

    从android 4.1 源码中抠出了android 4.1 SDK 源码。有兴趣的可以加入到eclipse中查看源码。

    android 1.5的sdk源代码,真正可以加入Eclipse的,第二部分

    在&lt;android-SDK&gt;/platforms/android-1.5/目录下创建source/目录,然后解压文件。

    android 1.5的sdk源代码,真正可以加入Eclipse的,第一部分

    在&lt;android-SDK&gt;/platforms/android-1.5/目录下创建source/目录,然后解压文件。

    Android高级编程--源代码

    该资料是《Android高级编程》的源代码 对应的书籍资料见: Android高级编程 基本信息 原书名: Professional Android Application Development 原出版社: Wrox 作者: (英)Reto Meier 译者: 王鹏杰 霍建同 出版社...

    基于linux与windows平台下 如何下载android sdk源代码的方法详解

    第2部份介绍如何把android sdk的源代码加入到eclipse里 第1部份如何下载android sdk的源代码  1、环境。 Linux 2.6 ,Python 2.4.3 或windows XP 2、工具。主要使用git工具,下载android sdk source。 (1)Linux下...

    Android数据库加密SDK.zip

    而这个SDK是从原生Android4.0源码里单独移植SQLITE模块,并将这个模块编译时加入加密方法,因为SQLITE源码中是有加密的接口,所以移植时就只需将这个预编译参数加入和一些文件即可。 这个SDK只支持Android2.1以上的...

    Android系统中加入源代码

    在android系统下,用eclipse的debug进行调试,经常会遇到source not found而无法调试,被迫终止。以上将教您如何操作,来添加SDK的源代码

    微派Android SDK开发文档

    本文档描述了融希-应用内支付平台Android SDK标准版、大客户版、平台版SDK 的用途与用法,并提供了示例代码。您仅需要在现有的应用中加入少量新代码,就可以集成微派的功能,轻松获得用户量和收入的倍增。

    万普广告sdk教程

    包及 Demo 源代码,便亍开发者在 Android 应用中方便癿集成万普平台癿各顷功能。 本文档描述了标准版 SDK 癿用途不用法,并提供了示例代码。您仅需要在现有癿应用中加入少 量新代码,就可以集成万普平台癿各顷功能...

    疯狂Android讲义源码

     1.2.1 下载和安装Android SDK 5  1.2.2 安装Eclipse和ADT插件 7  1.3 Android常用开发工具的用法 10  1.3.1 创建、删除和浏览AVD 10  1.3.2 使用Android模拟器  (Emulator) 14  1.3.3 使用DDMS进行调试 15...

    Android应用源码直连mysql的图书馆管理系统源码.zip

    本项目是一个Android直连mysql的图书管理系统,遗憾的是,目前只有Android客户端,作者没有把数据库导出来跟客户端放在一起,有兴趣和mysql基础的朋友可以根据DBUtil.java类里面的表名和字段名新建一个mysql数据库,...

    安卓java读取网页源码-WMH5SDK-Android:WMH5SDK-Android

    安卓java读取网页源码 文漫H5 android SDK使用说明 1.概述 网易文漫安卓H5 SDK可以帮助合作方安卓客户端快速接入网易文漫提供的功能丰富的H5网站,具体提供如下支持: 1.提供了一个自定义的WebView,可以按需通过xml...

    Android M (6.0)官方源码(完整版)

    Android M (6.0)官方源码整版,从已更新完的SDK Manager中拷出来的,课供参考和学习,Android 6.0也加入了一些新控件,和指纹等信息的进步,同时还有新特效的出现,源码课拷贝至自己的项目中运行哦!

    自定义统计SDKTcStatInterface.zip

    SDK压缩包,其中包括了Android SDK和AndroidDemo。Android版SDK以Module形式提供, 你的APP只需要添加少量代码和配置,即可完成接入TcInterface统计服务。统计服务AndroidSDK所有的接口都封装在TcStatInterface抽象...

    Android 通过代码添加app 到白名单。关闭此APP的 省点策略,适用于手机 安卓6.0系统以上。

    其实次主要代码,如果app没有在 白名单。会弹出dialog 引导用户选择。 PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); if(Build.VERSION.SDK_INT &gt;= Build.VERSION_CODES.M) { if ...

    新版Android开发教程.rar

    将会支持 Google 可能发布的手机操作系统或者应用软件,共同开发名为 Android 的开放源代码的移动 系 统。 谷歌早在 2002 年就进入了移动领域,可是由于目前的手机操作系统企业和手机企业相对封闭,提高了 行业的...

    JAVA上百实例源码以及开源项目源代码

     Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标...

    《Google Android开发入门与实战》.pdf

    从技术实现上,讲解了5个android平台下的完整综合实例及源代码分析,分别是rss阅读器、基于google map的个人gps、豆瓣网(web 2.0)客户端、在线音乐播放器、手机信息查看助手。本书注重对实际动手能力的指导,在遵循...

Global site tag (gtag.js) - Google Analytics