如何在javadoc中生成指向android Classes参考的链接?

时间:2010-05-12 11:13:33

标签: android javadoc

当我在Eclipse中为我的Android项目生成javadoc时,会有很多警告,比如

cannot find symbol
symbol  : class TextView

warning - Tag @see: reference not found: android.app.Dialog

我也试过

-link http://developer.android.com/reference/
-link http://java.sun.com/j2se/1.4.2/docs/api/

Extra javadoc options (path names with white spaces must be enclosed in quotes)的{​​{1}}标签中(eclipse-> project-> Generate Javadoc的第三个对话框)。

但只有Configure Javadoc Arguments正在工作,即String类 生成链接-link http://java.sun.com/j2se/1.4.2/docs/api/。但对于http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html?is-external=true,不会生成任何链接。

修改

我还尝试在android.app.Dialog中选择android.jar Select referenced archives and projects to which links should be generated中的标签(eclipse的第二个对话框 - > project-> Generate Javadoc), 但这会创建本地android-sdk目录中文档的本地链接,而不是像Java API那样的在线Android引用。

7 个答案:

答案 0 :(得分:42)

Javadoc依赖于名为package-list的文件来确定在给定目录下记录的Java包。出于某种原因,http://d.android.com/reference/这样的文件缺失,因此

的“天真”方法
-link http://d.android.com/reference/

不起作用 - 您会收到一条警告,指出无法检索包列表,也不会在您的文档中生成任何链接。 (注意:第二个eclipse对话框中的复选框只为你组合-link参数,所以这并没有什么区别)

但是,Javadoc提供-linkoffline参数,以便能够针对情况进行调整:您希望在线链接到其他一些Javadoc文档,但当时无法访问它生成自己的文档。以下是它的工作原理:虽然-link只接受一个参数(您要链接到的JavaDoc文档的URL),但-linkoffline需要第二个参数。那个是package-list文件的位置!

因此,要链接到在线Android参考文档,您应该选择第二个eclipse对话框中的任何复选框,而是添加

-linkoffline http://d.android.com/reference file:/C:/pathtoyour/android-sdk-windows/docs/reference

在第3个对话框的 Extra Javadoc选项中。这样您就可以使用本地安装的Android文档的package-list,但生成的Javadoc中的链接仍将指向在线版本。

希望它有所帮助!

答案 1 :(得分:2)

经过一些试验和错误(以及从多个网络搜索中收集到大量建议)后,我能够使用特定的ANT脚本,可以通过“运行方式 - > Ant构建在Eclipse中运行” ”

我将此文件“javadoc.xml”保存在我的项目目录中,与AndroidManifest.xml文件并行。

以下是文件的内容:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project basedir="." default="doc" name="api docs">
<target name="doc" description="my docs">
<javadoc destdir="docs" doctitle="Testing the Title" verbose="on" 
    use="true" 
    classpath="C:\Android\android-sdk_r04-windows\android-sdk-windows\platforms\android-2.1\android.jar;.\libs\admob-sdk-android.jar"
    sourcepath="gen;src"
    linkoffline="http://d.android.com/reference C:\Android\android-sdk_r04-windows\android-sdk-windows\docs\reference"
    stylesheetfile="C:\Android\android-sdk_r04-windows\android-sdk-windows\docs\assets\android-developer-docs.css"
    >
</javadoc>
</target>
</project>

答案 2 :(得分:1)

虽然我在这里回答了最新的答案,但我发现如果我导出了一个ant构建文件(javadoc.xml),并且手动将android.jar文件添加到类路径中,我只能使它工作。我的javadoc.xml看起来像:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project default="javadoc">
    <target name="javadoc">
        <javadoc access="private" additionalparam=" -linkoffline http://developer.android.com/reference file:/opt/android-sdk-linux_x86/docs/reference" author="true" classpath=".:/opt/android-sdk-linux_x86/platforms/android-8/android.jar" destdir="doc" nodeprecated="false" nodeprecatedlist="false" noindex="false" nonavbar="false" notree="false" packagenames="com.example.mypackagename" source="1.5" sourcepath="gen:src" splitindex="true" use="true" version="true"/>
   </target>
</project>

然后我可以使用ant -f javadoc.xml生成文档。我无法从Eclipse GUI中找到一种正确的方法,因为即使选择正确的引用存档也不会导致Eclipse将android.jar添加到类路径中。

答案 3 :(得分:1)

谢谢@Henning

这是我在ant build.xml文件中需要的内容:

<link offline="true" href="http://d.android.com/reference" packagelistLoc="${android.home}/docs/reference"/>

答案 4 :(得分:1)

到目前为止(2020年8月),Google已在其Android开发人员文档中发布了package-list。因此,只需链接到https://developer.android.com/reference/https://d.android.com/reference/就可以了(只需成功尝试一下)。

小故障:如果您打开生成的Javadoc并尝试链接到Android类(或标准Java类之一,也将链接到Android文档)的链接,并且您处于框架模式,则浏览器可能拒绝点击该链接,因为Android网站不允许嵌入其他页面。然后,Firefox为您提供了在新选项卡中打开目标文档的选择。

答案 5 :(得分:0)

如果您遇到SDK路径问题,可以手动创建package-list文件(或将$ANDROID_HOME/docs/reference/package-list下的文件复制到项目中)。

要使用相对路径,不应使用file:/前缀。如果您将文件放在sub-directory/package-list中,则参数将为-linkoffline http://d.android.com/reference sub-directory

答案 6 :(得分:0)

对于我们这些敢于转向不断发展的Android Studio&amp; amp; Gradle,其中一个实际工作并使事情变得更容易的事情是指本地或网络上的包列表位置。例如,Julian中的以下代码生成javadoc文件:

task("generate${variant.name.capitalize()}Javadoc", type: Javadoc) {
    title = "Documentation for Android $android.defaultConfig.versionName b$android.defaultConfig.versionCode"
    destinationDir = new File("${project.getProjectDir()}/doc/compiled/", variant.baseName)
    source = variant.javaCompile.source
    ext.androidJar = "${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar"
    classpath = files(variant.javaCompile.classpath.files) + files(ext.androidJar)

    description "Generates Javadoc for $variant.name."

    options.memberLevel = org.gradle.external.javadoc.JavadocMemberLevel.PRIVATE
    options.links("http://docs.oracle.com/javase/7/docs/api/");
    options.links("http://developer.android.com/reference/reference/");
    exclude '**/BuildConfig.java'
    exclude '**/R.java'
}

但是这会在构建期间发出警告,因为包裹列表不再可用(如果有的话)

options.links("http://developer.android.com/reference/reference/");

起初我认为可能是冗余参考/参考问题,但是包裹清单也没有在

options.links("http://developer.android.com/reference/");

因此,在阅读了关于该线程的讨论后,可以更改一行以引用SDK中的本地引用目录:

options.links("c:\\path-to-sdk-directory\\docs\\reference");

它在本地找到包列表,不再显示警告消息。