`

把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/

分享到:
评论

相关推荐

    android4.4SDK源码包

    这个源码包包含了Android操作系统的源代码,使得开发者能够深入理解系统的工作原理,进行定制化开发或者进行系统级的调试。Android 4.4是Google于2013年发布的一个重要版本,引入了多项新特性和性能优化。 一、...

    Android-ANDROIDSDK源码解析

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

    支付宝移动快捷支付android源码更新(Delphi 11.3 Android 应用接入支付宝SDK的方法).rar

    本资源提供了具体的源代码示例,帮助开发者实现这一功能。下面将详细介绍这个过程。 首先,我们需要了解Delphi 11.3。这是Embarcadero公司开发的一款强大的RAD(快速应用程序开发)工具,支持Windows、macOS、iOS、...

    Android系统中加入源代码

    - 运行`fix_android_sdk.py &lt;android-source&gt; &lt;android-sdk&gt;`,其中`&lt;android-source&gt;`是指定的Android源代码存放目录,`&lt;android-sdk&gt;`是指你的Android SDK目录。 - 脚本会在指定的SDK目录下的`platforms/android...

    微盘AndroidSDK开发者文档1

    此外,开发者还可以加入微盘Android SDK开发者交流群,与其他开发者交流经验,获取最新的SDK更新和问题解答。为了更好地使用微盘SDK,开发者应该保持对微盘开放平台的关注,及时获取更新信息和优化建议。 总之,...

    andorid查看 SDK源码的方法

    - **书籍推荐**:《Android源代码情景分析》等专业书籍提供深入的源码解析。 #### 六、总结 通过本文介绍的方法,开发者可以轻松地在自己的开发环境中集成Android SDK源码。这不仅能够帮助开发者更深入地了解...

    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/目录,然后解压文件。

    高低版本源码和SDK转换方法

    在软件开发过程中,尤其是移动应用开发领域,开发者经常遇到的一个问题就是源代码与所安装的SDK(Software Development Kit)版本不匹配的情况。这种情况下,如果直接编译运行,可能会出现各种错误提示,如编译失败...

    环信SDK源码下载

    本文将深入解析环信SDK的源码,帮助开发者更好地理解和运用这一工具。 环信SDK的核心功能包括: 1. **文本聊天**:提供了简单易用的API,使得应用能够发送和接收文本消息,支持单聊和群聊模式。 2. **语音通话**:...

    AndroidSDK开发环境搭建.pdf

    Eclipse 是一个开放源代码的集成开发环境(IDE),它提供了强大的开发和调试功能。Android SDK 开发环境需要 Eclipse 3.4(Ganymede)或 3.5(Galileo)。我们推荐使用 Eclipse 3.5 SR2。 首先,下载 Eclipse 的...

    Android-ApplozicAndroidChatSDK-实现Android实时聊天和短信SDK

    文件"AppLozic-Applozic-Android-SDK-8657d77"应该包含了SDK的源码和相关文档,开发者可以通过阅读文档和示例代码来更好地理解和使用这个SDK。总的来说,Applozic Android Chat SDK是提升Android应用交互性和用户...

    智游推送Android-push-开源SDK

    这个SDK是开放源代码的,意味着开发者可以查看、修改并自定义其内部实现,以适应特定的应用场景和需求。 在Android应用开发中,推送服务是至关重要的组成部分,它能够实现在后台向用户的设备发送通知,即使应用未在...

    Unity下-Android 的 SDK与JDK

    **JDK(Java Development Kit)**是Java编程语言的开发环境,它包含了编译Java源代码、运行Java程序所需的所有工具。Unity在构建Android项目时,会用到JDK中的`javac`编译器和`jar`打包工具等。因此,确保安装了最新...

    android 4.2源代码

    Android 4.2源代码是Android操作系统的一个重要版本,它基于Android SDK的"sources"文件。这个版本在Android系统的发展中扮演了关键角色,引入了一系列新功能和改进,旨在提升用户体验、性能和安全性。让我们深入...

    androidsdk-platforms-android-26.rar

    - **编程**:使用Java或Kotlin编写源代码,利用Android SDK提供的API实现功能。 - **编译与调试**:通过Gradle构建系统编译应用,使用Android模拟器或连接的真实设备进行调试。 - **发布**:构建APK,签名并发布...

    Android数据库加密SDK.zip

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

    Android-AssistantBySDK是一款基于灵聚SDK灵聚智能引擎

    源码包含了UI设计、服务端接口调用、数据持久化等多方面的代码示例,对于Android开发者来说,是一份宝贵的参考资料。 总结来说,"Android-AssistantBySDK"通过集成灵聚SDK,将AI技术融入Android应用,为用户提供了...

    android 飞鸽 源代码

    1. **Android SDK**: 飞鸽源代码是基于Android SDK构建的,这意味着它使用了Java或Kotlin语言,并遵循Android应用程序的开发规范。开发者需要对Android平台的API、生命周期管理和组件(如Activity、Service、...

    Android源码——文本阅读器源代码.7z

    这个"Android源码——文本阅读器源代码.7z"压缩包包含了一个实现这一功能的应用程序的源代码,这对于Android开发者来说是一个极好的学习资源。让我们详细探讨一下这个项目可能涉及的关键知识点。 1. **Android SDK*...

Global site tag (gtag.js) - Google Analytics