如何在 Eclipse 中附加 Android 支持库源?

Posted

技术标签:

【中文标题】如何在 Eclipse 中附加 Android 支持库源?【英文标题】:How do I attach the Android Support Library source in Eclipse? 【发布时间】:2012-01-22 12:20:55 【问题描述】:

将源代码附加到外部库非常棒。我在哪里可以找到 v4 support package 的源代码?最好是一个 zip 文件,可以很容易地附加到 Eclipse 中的android-support-v4.jar

【问题讨论】:

imo @andr 答案是可以接受的 【参考方案1】:

我只想为支持库添加另一种附加源的方法。 它需要版本 20 或更高版本的 ADT。假设此方法适用于容器禁用设置源/javadoc 位置的所有 JAR。以下是您需要做的:

    android-support-v4.jar 库位于项目的libs 目录中。在同一个目录中创建一个常规 Java 属性文件,其名称与所讨论的 JAR 完全相同,但附加了 .properties 扩展名。因此,对于我们的支持库,它将是:android-support-v4.jar.properties

    打开创建的属性文件并将名为src 的属性的值设置为可以找到该库的源的位置。您的文件应该有如下一行:

    src=c:/apps/adt-bundle-windows-64bit/sdk/extras/android/support/v4/src
    

    保存文件。

    关闭并重新打开您的 android 项目。

    尝试浏览到支持类之一。源附件现在应该可以工作了。

在我的情况下工作得很好。

需要注意的一点:如果src不是绝对路径,则会从JAR文件的父目录开始解析。以支持库为例——如果src=support/src,ADT会假设类源位于libs/support/src

作者对此功能的简短描述可以在here找到。

如果有人对这个.properties 文件的处理方式感兴趣,我建议阅读补丁集#4,尤其是。 eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/ internal/project/LibraryClasspathContainerInitializer.java 的变化:)

编辑

另请参阅 WindRider 关于在具有多个引用库的项目中正确添加源代码的精彩评论。

【讨论】:

这是“官方”的推荐方式。 请注意,如果您有一个包含多个引用库的大项目,而这些库又引用了 android 支持库,则必须确保 android-support-v4.jar 的所有副本都是相同的二进制文件。否则你会得到一个奇怪的错误“checksum mismatch bla bla”。也只会导入这些支持库副本之一,可能包含在库项目的 lib\ 文件夹中。要查看使用的是哪一个,请打开 Package Explorer -> Android Dependencies 并查看支持库是从哪里导入的。然后不要对主项目执行相同的过程,而是对库项目执行相同的过程。 在尝试了其他一些方法后,我可以说这是最好的答案——应该被接受为正确的答案。 @Simulant - 我不是 ActionBar 兼容 lib 方面的专家,但快速浏览一下,我认为要使用它,您必须将其作为单独的 Android Lib 项目导入,并将其作为在你的主项目中依赖,对吧?如果是这样,您只需要按照此处针对 lib 项目的“libs”目录 描述的步骤进行操作。该目录应该有两个.jar 文件:android-support-v4.jarandroid-support-v7-appcompat.jar,您应该能够为其创建提到的.properties 文件。 如果您使用的是 Windows,请确保在 src 行中使用正斜杠。【参考方案2】:

这里附上Eclipse Juno支持库源码的解决方案

我想您的项目已经在“Android Dependencies”下的“Build Path”中有android-support-v4.jar,但您不能将源目录附加到它。 (“来源附件”表示“不可修改”)。解决方案:

转到“配置构建路径” 添加外部 JAR > YourProject/libs/android-support-v4.jar (我知道您的项目已经引用了它,但不用担心,只需重新添加即可。 展开 jar 并将 Source 附加到外部 Jar:android-sdk/extras/android/support/v4/src 切换到“Order and Export”选项卡,拉起“Android Dependencies”上方的外部jar

享受使用源代码浏览支持库的乐趣!

如果您有一个附加到YourProject 的“Android 测试项目”,那么YourProjectTest 可能不再编译。在这种情况下,您必须返回“Order and Export”并拉下“Android Dependencies”下方的外部 jar 才能恢复正常。

【讨论】:

“Java 构建路径”而不是“配置构建路径”。 这包含了所有需要的步骤并且对我有用!最后一步(排序)被忽略了,非常重要。 我在 Android Private Libraries(APL,在 Android 依赖项上方列出)中列出了 android-support-v4.jar,因此我不得不将新添加的 .jar 拉到 APL 上方 为了记录,这也适用于其他库,而不仅仅是支持库。 /显而易见的船长 您不应该这样做。它违背了标准 android 应用程序的初始设置。我建议您使用@andr 的“官方”解决方案。【参考方案3】:

从 Android SDK Manager 下载支持包后,您可以在文件夹 /extras/android/support/v4/src 中找到支持包的源代码。

【讨论】:

就我而言,它存储在C:\Program Files\Android\android-sdk\extras\android\compatibility\v4\src\java。然后,我使用以下命令将其内容(android 文件夹)打包到 *.jar 中:jar cf android-support-v4-sources.jar android/。我将此 jar 附加到 android-support-v4.jar(eclipse 中的 java 构建路径/库设置)。效果很好:) 这似乎不起作用。我怎样才能让它工作?帮助。我正在使用 adt 21.1。 android-support-v4.jar 的 doc 源或 java 源是不可修改的。右键单击项目,属性 > Java 构建路径 > 库选项卡,Android 私有库 > android-support-v4.jar - 源附件:(无)- 不可修改。 :( 好的。让它工作。 android-support-v4.jar 需要在Referenced Libraries 中右击,Build Path..Add to Path。然后在Referenced Libraries,在android-support-v4上右键属性并设置源。 这个答案确实完全回答了 OP 的问题。要将其附加到 Eclipse 中的 jar 文件,请参阅@andr 的回答 @Thupten,你不是引用 两次 那么什么时候就足够了?【参考方案4】:

参考已接受的答案,也可以直接从目录附加源代码,而无需构建 .jar 文件。从 Java 构建路径/库选项卡中,展开 android-support-v4.jar,突出显示“源附件”,单击“编辑...”,“外部文件夹...”,然后指向 (android-sdk)\extras\安卓\支持\v4.

这是使用 eclipse indigo 测试的。

来自 cmets:

如果您的支持库位于项目的“Android Dependencies”文件夹中,似乎会出现无法将源添加到支持库的问题。解决方法是从相同的“Java 构建路径/库”选项卡单击“添加外部 JAR...”并在 (android-sdk)\extras\android\support\v4 路径中找到 .jar 文件。然后它将出现在您的项目设置中的新“引用库”文件夹下。

【讨论】:

当然,如果您没有无法将源附加到 jar 的错误。 这太棒了,但我的“编辑”按钮是灰色的:/。那是你提到lxx的错误吗?找到解决方案了吗? 全部变灰,显示“不可修改” 如果您的支持库位于项目的“Android Dependencies”文件夹中,似乎会出现无法将源添加到支持库的问题。解决方法是从相同的“Java 构建路径/库”选项卡单击“添加外部 JAR...”并在 (android-sdk)\extras\android\support\v4 路径中找到 .jar 文件。然后它将出现在您的项目设置中的新“引用库”文件夹下。然后,您可以按照原始答案中的说明将源附加到此 .jar 文件。【参考方案5】:

对于喜欢标准的人来说,有源代码的jar文件,这样更方便源代码控制和项目共享。

例如:

../android-support-v4.jar ../android-support-v4-src.jar

创建源jar文件并附上很简单:

    cd 到 path_to_android_sdk/extras/android/compatibility/v4/ 使用您喜欢的 zip 程序(例如 7-zip)创建一个 zip 文件并将其命名为 android-support-v4-src.jar。 jar 中的第一个文件夹应该是 /scr。 将文件复制到您的项目中,在本例中,它与代码 jar 位于同一文件夹中。 在 Eclipse 中,在项目属性中附加源 jar。

【讨论】:

感谢您的回答。要创建 jar 存档,也可以使用 JDK 中包含的 jar 程序。【参考方案6】:

我只是删除自动生成的,然后手动将其添加为参考库。

首先打开一个类,IDE 会要求你更改附加源。

【讨论】:

【参考方案7】:

从构建路径附加 src 和 doc 的过程适用于某些人,但不适用于某些人(比如我)。要记住的一些关键事项

    确保您在 Package Explorer,而不是 Project Navigator

    如果您已将 android-support-v4.jar 放在项目下的 libs 文件夹中。很棒。

    右键单击 jar,构建路径.. 添加到路径。 (如果“添加到路径”未显示,则它已添加。您将看到配置路径..)

    作为第 3 步的结果,一个名为 Referenced Libraries 的新文件夹将出现在包资源管理器树中。打开那棵树,在那里找到 android-support-v4.jar。在 Referenced Libraries 属性中右键单击此 jar。然后在那里设置 Java Source Attachment 和 Javadoc Location。

    你已经完成了。

我的 Java 源附件的路径。(它的外部位置)

C:/Users/thupten/adt-bundle-windows-x86_64-20130514/sdk/extras/android/support/v4/src

我使用 android 网站文档作为 java 文档位置

http://developer.android.com/reference/android/support/v4/app/package-summary.html

【讨论】:

【参考方案8】:

我为我找到了这个:

对于主库:android.jar:

src: sdk/sources/android-19 文档:sdk/docs/reference/

对于支持库:android-support-v4.jar:(在此之前我们应该添加 android-support-v4.jar 就像外部 jar 一样(项目属性 -> Java 构建路径 -> 库,然后在选项卡中“订购和导出” ' 在 Android Private Libraries 之前拉起这个库)):

src: sdk/extras/android/support/v4/src/java 文档:http://developer.android.com/reference/android/support/v4/app/package-summary.html(不确定)

【讨论】:

【参考方案9】:

更新 SDK 并在其中下载文档后:

将支持库项目导入包资源管理器。 在库中创建一个文件夹并将其命名为 ext-jars

android-support-v4.jar 移动到ext-jars 文件夹。

右键单击项目并单击属性。 单击左侧菜单中的 Java 构建路径,然后选择库选项卡。 点击Add JARs...然后展开项目并选择你已经移动到文件夹ext-jars的jar文件。

展开添加的jar,选择Source attachment,然后点击Edit。 选择External location然后点击External Folder... 选择 Support v4 的源文件夹,该文件夹位于 [sdk-path]/extras/android/support/v4/src

选择Javadoc location点击Edit然后选择Javadoc URL然后点击Browse...并选择位于[sdk-path]/docs/reference/的支持v4的javadoc位置

- 选择Order and Export 标签并检查您刚刚添加的android-support-v4.jar

我建议你也清理项目并重新打开 Eclipse。

【讨论】:

以上是关于如何在 Eclipse 中附加 Android 支持库源?的主要内容,如果未能解决你的问题,请参考以下文章

Android调试器不断断开连接

如何在 Android 地图活动中显示地图?

如何在 Visual Studio 中将源附加到引用的程序集

如何在 Eclipse 中为任何 jar 文件附加源代码或 JavaDoc,例如JavaFX?

从 Qt Creator 附加到 Android 进程

Eclipse 工程迁移到 Android Studio