如何将javadoc或源代码附加到libs文件夹中的jar包?

257

针对Eclipse的ADT r17插件新增了自动设置JAR依赖项的功能。现在,/libs文件夹中的任何.jar文件都将添加到构建配置中。不幸的是,Android Dependencies类路径容器是不可修改的。

不可修改的Android依赖关系classpath

我该如何将Java文档和源文件附加到自动插入的.jar(来自/libs文件夹)上?


我认为你的问题没有得到回答。Mark的回答恰好给出了不是你要求的解决方案。我们如何通过自动库(而不是手动JAR)附加javadoc和源代码? - pjv
2
这个错误 http://code.google.com/p/android/issues/detail?id=27490#c21 存在问题。评论21说,使用标准的java .properties文件(foo.jar-> foo.jar.properties),在ADT r20中将可以附加源代码/ javadoc,该文件允许您编辑到源文件夹(或存档)的相对或绝对路径和/或相对或绝对路径到javadoc。 - Sergii Pechenizkyi
12个回答

400

最好的回答方式是总结Xavier, plastiv, VinceFRChristopher的答案。

步骤指南

为了将源代码和Javadoc链接到由Eclipse自动链接的.jar库,您需要执行以下操作:

请将库的 .jar 文件放置在 libs 文件夹中,并将相关的源代码 .jar 和文档 .jar 文件分别放置在子文件夹(例如 libs/srclibs/docs)中。您可以使用名称不同于 srcdocs 的其他名称,但重要的是 .jar 文件不直接放在 libs 文件夹中。
libs 文件夹中创建一个名为实际库 .jar 的 .properties 文件(参见示例)。确保保留 .jar 部分。
.properties 文件中指定源代码和 javadoc .jar 的相对路径。 关闭并重新打开 Eclipse 项目!可选地,按下 F5 刷新项目。
在源代码中选择链接库的对象。
在 Eclipse 中打开 Javadoc 视图以检查文档(参见屏幕截图)。
打开所选对象的源代码声明(默认快捷键:F3)。


示例

该示例使用Gson库

libs文件夹的目录结构:

libs
├── docs
│   └── gson-2.2.2-javadoc.jar
├── gson-2.2.2.jar
├── gson-2.2.2.jar.properties
└── src
    └── gson-2.2.2-sources.jar

gson-2.2.2.jar.properties 的内容

src=src/gson-2.2.2-sources.jar
doc=docs/gson-2.2.2-javadoc.jar


附加信息

当然,您可以将javadoc和源jar移动到其他文件夹并指定相对路径。这取决于您。直接将源和javadoc jar放置在lib文件夹中是可能的,但不建议这样做,因为这会导致文档和源代码包含在应用程序中


Eclipse JavaDoc面板的屏幕截图:

JavaDoc view in Eclipse

Android 4.2.2下使用Gson的Eclipse项目截图:

Eclipse test project screenshot


引用未打包的Javadoc

如果您想引用未打包为.jar文件而是仅作为文件和文件夹提供的Javadoc,如Android开发者在评论中提出的那样,请按照以下步骤进行:

  1. Place the library .jar in the libs/ folder
  2. Create a yourlibraryname.jar.properties file (don't forget the .jar) with the following content:

     doc=docs
    
  3. Add the javadocs folders to the libs/ folder.

你应该设计以下文件夹结构:
├── docs
│   ├── allclasses-frame.html
│   ├── allclasses-noframe.html
│   ├── com
│   │   └── google
│   │       └── ads
│   │           ├── Ad.html
│   │           │   ....
│   │           └── package-tree.html
│   │   ...
│   └── stylesheet.css
├── GoogleAdMobAdsSdk-6.4.1.jar
└── GoogleAdMobAdsSdk-6.4.1.jar.properties

不要忘记按照上面提到的方法关闭并重新打开Eclipse项目!下面是一个参考GoogleAdMobAds Android library的示例项目截图。

GoogleAdMobAds Android library Eclipse project


7
啊,对我来说需要关闭并重新打开Eclipse项目。(在那之前我已经尝试过多次刷新和清理但都没有成功。) - Steve Haley
4
谢谢 @JJD,非常好用。在它开始工作之前我只需要重新启动Eclipse即可。 - javajavajavajavajava
26
注意:您应该将Javadoc和源代码JAR文件放入子目录中,例如“./libs/docs”,否则这些JAR文件将被捆绑到您的APK中!另外,如果发现重复的HTML文件,构建APK时将失败,因此无法同时包含多个库的Javadoc。 - Christopher Orr
5
可以将.properties文件中的远程javadoc链接引用为:doc=http://community.versant.com/documentation/reference/db4o-8.0/java/api/。 - Matthias
9
显然,如果你只链接Javadoc而不是源代码,这种方法行不通。我使用7zip提取了Javadoc的jar包到“我的文档”文件夹中的一个文件夹,然后让属性文件直接指向该文件夹中的Javadoc index.html文件,就像这样:doc=C:\Users\johny\workspacenewfb\robotium-solo-4.0-javadoc。 - mbwasi
显示剩余37条评论

25

在Windows上,您需要转义反斜杠以引用属性文件中的文档和源路径。例如,对于android-support-v4.jar,属性文件内容如下:

在 Windows 系统中,如果要在属性文件中引用文档或源路径,需要使用反斜线进行转义。例如,针对 android-support-v4.jar 文件,属性文件的内容应该类似于:

doc=C:\\Program Files (x86)\\Android\\android-sdk\\extras\\android\\support\\v4\\docs
src=C:\\Program Files (x86)\\Android\\android-sdk\\extras\\android\\support\\v4\\src

1
哇,你的回答解决了我的问题,我放了一个 \ 但是我们必须放两个 \ 。非常感谢! - Arash

17

以下答案来自 http://code.google.com/p/android/issues/detail?id=27490#c21

在你的libs文件夹中,必须有:

doc(folder)
    foo_doc(folder)
        index.html
        ...
        ...
foo.jar
foo.jar.properties

在你的foo.jar.properties文件中,只需输入doc=./doc/foo_doc

也许你需要刷新项目、清理它、关闭并重新打开它。

对我来说是有效的!


如果您有zip文件中的文档,这是一个好方法,非常感谢!点赞 - Akhil Jain

10

我尝试了以上所有方法,但都无法解决我的问题。我找到了一种永远有效的方法。基本上,罪魁祸首是ADT处理“libs”文件夹的方式,因此我不再使用“libs”文件夹。相反,我创建了一个“libraries”文件夹并使用它。

您可以执行以下操作,它将始终起作用 - 即使ADT将来更改了它处理“libs”文件夹的方式:

  1. 创建一个“libraries”文件夹。
  2. 在其中为每个库创建一个子文件夹。
  3. 将每个库的所有文件放入相应的文件夹中(java jar文件、source jar文件、javadoc jar文件等)。
  4. 通过单击添加Jars...按钮从“libraries”文件夹中的库子文件夹中添加jar文件,在Java Build Path的“Libraries”选项卡中添加每个项目的java jar文件。
  5. 通过在“Libraries”选项卡中打开项目、选择所需项并单击编辑...按钮来将源代码/ javadocs附加到每个项目中,从“libraries”文件夹中的库子文件夹中添加源代码/ javadocs。
  6. 在Java Build Path的“Order and Export”选项卡中勾选每个项目的复选框。
  7. 验证所有库已移动后,删除“libs”文件夹。

按照上述程序,您的项目将具有以下文件夹:

enter image description here

您的Java Build Path将如下所示:

enter image description here

在“Order and Export”中,库已被选中:

enter image description here


5

目前,将您想要Javadoc的库移动到lib。 然后将该库添加到 Build Path 并添加Javadoc。

请参阅android问题中的此评论。


不要忘记(就像我一样)检查顺序并将库设置为在“构建路径”中导出。 - Carlos Sobrinho

4
在ADT 22中,我无法访问commons-io-2.4.jar和android-support-v4.jar的Javadoc。以下是我的解决方法:
1. 前提条件:两个库都列在“引用库”下。 2. 右键单击commons-io-2.4.jar并选择属性。出现此窗口: commons-io-2.4.jar与commons-io-2.4-javadoc.jar捆绑在一起,因此我在存档外部文件路径中指定了Javadoc。
3. 我对支持库执行相同的操作:右键单击android-support-v4.jar并选择属性。出现此屏幕:
这次,我指定了源目录的路径。

这绝对是连接 javadoc 和/或 src 到库的最简单和最直接的方法。谢谢!另外需要注意的是,Referenced Library 中不需要包含 javadoc 或 src。 - k_rollo

3
当我升级SDK工具和ADT修订版17时,对于commons-io-2.0.1.jar的库引用已经失效。为了解决这个问题,我使用Project -> Properties -> Java Build Path并选择Libraries选项卡。我删除了任何与commons-io-2.0.1.jar有关的引用,然后使用Add Jar重新将commons-io-2.0.1.jar添加到项目中。然后,我单击库名称旁边的'>'箭头以展开库引用,并使用编辑按钮设置源附件和Javadoc位置。很抱歉,我无法发布图像,因为我的声望不够(请理解)。

对我没用。你的jar文件放在项目的哪里?我的在libs文件夹里。 - Daniel Ryan
终于有人给了一个真正有效的指导!非常感谢你。之前提到的所有方法,包括“.properties”文件都没有对我有所帮助,但是在对话框屏幕中添加库作为外部JAR则起了作用。 - AlxDroidDev

1
似乎是一个不断变化的目标,但是,在从许多地方收集了一些片段之后(包括对这个问题的答案有所帮助,但未能描述所有必要的细节,或者可能在此期间系统已经略微改变),这似乎是解决方案,至少截至现在(2013年8月28日)。

  • 在项目外某个地方打开一个文件夹用于存放您的javadoc。
  • 将您的javadoc解压缩到该文件夹中,每个javadoc都应该放在自己的文件夹中。
  • 在您的lib文件夹中,为您想要关联javadoc的每个库添加一个xxx.jar.properties文件。
  • 在该属性文件中,引用您解压缩适当javadoc的文件夹(在Windows上,请转义反斜杠):

doc=d:\\Android\\javadoc\\libGoogleAnalyticsServices

  • 关闭并重新打开Eclipse中的项目(刷新不足够)。现在当您将鼠标悬停在适当的类上时,应该会看到工具提示。

未能遵守任何这些步骤(未解压缩javadoc,引用文件而不是文件夹等)似乎会破坏它。


1
对于任何给定的jar文件,如果您想在编码时查看工具提示上的Javadoc帮助,请执行以下操作: 右键单击您的项目 > 属性 > Java Build Path > 库选项卡。单击您的jar旁边的箭头以展开。 源代码附件应指向实际jar文件的位置(可能就在您的java文件夹中)。 Javadoc位置:这里有两个选择:URL和存档。如果此jar文件的javadoc以包含在第一级别的index.html文件的文件夹形式存在,则选择“Javadoc URL”并指向该文件夹。 如果您的javadoc位于一个jar文件中,请选择“存档中的Javadoc”并指向该jar文件。 不要忘记重新启动您的工作区/关闭并重新打开您的项目以更新工具提示中的Javadoc信息。
我希望这可以为我认为应该是非常简单的任务提供一个简单的答案。

1
我知道这个问题很老了,但昨天当我面临同样的问题时,上面发布的解决方案对我来说太烦人了。我发现可以在项目的.classpath文件中轻松添加源路径定义。Eclipse将会自动适应,然后您就可以浏览源代码了。

之前的classpath条目:

<classpathentry kind="lib" path="[PATH_TO_MY_JAR]"/>

在添加源路径之后。
<classpathentry kind="lib" path="[PATH_TO_MY_JAR]" sourcepath="[PATH_TO_MY_SOURCE_JAR]"/>

希望这可以帮到你。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接