如何生成链接到javadoc中的Android类的参考?

当我在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/ 

Configure Javadoc Arguments (eclipse-> project-> Generate Javadoc的第三个对话框Extra javadoc options (path names with white spaces must be enclosed in quotes)中的Extra javadoc options (path names with white spaces must be enclosed in quotes)选项卡中。

但只有 – -link http://java.sun.com/j2se/1.4.2/docs/api/正在工作,即为string类链接http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html?is-external=true生成http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html?is-external=true 。 但对于android.app.Dialog ,则不会生成链接。

编辑

我也尝试在Select referenced archives and projects to which links should be generatedselectandroid.jarConfigure Javadoc arguments for standard doclet (eclipse-> project-> Generate Javadoc的第二个对话框)中Select referenced archives and projects to which links should be generated选项卡,但是这会创build到本地文档的本地链接android-sdk目录,而不是像Java API那样的在线Android引用。

Solutions Collecting From Web of "如何生成链接到javadoc中的Android类的参考?"

Javadoc依赖一个名为package-list的文件来确定在给定目录下面logging了哪些Java包。 出于某种原因,这样的文件缺less http://d.android.com/reference/ ,因此“天真”的方法

 -link http://d.android.com/reference/ 

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

但是,Javadoc提供了-linkoffline参数,以便能够精确地调整这种情况:您希望链接到其他一些在线的Javadoc文档,但在生成自己的文档时无法访问它。 以下是它的工作方式: -link只接受一个参数(要链接的JavaDoc文档的URL),而-linkoffline需要第二个参数。 那个是package-list文件的位置!

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

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

在第三个对话框的Extra Javadoc选项中。 通过这种方式,您可以使用本地安装的Android文档的package-list ,但生成的Javadoc中的链接仍然会指向在线版本。

希望能帮助到你!

经过一些试验和错误(以及从多个网页search中收集到的大量build议)之后,我可以使用特定的ANT脚本来处理这个脚本,该脚本可以通过“Run As – > Ant Build”在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> 

虽然我遵循顶部的答案在这里,我发现我只能得到它的工作,如果我导出一个ant构build文件(javadoc.xml),并手动将android.jar文件添加到类path。 我的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中正确执行的方法,因为即使select了正确的引用归档,也不会导致Eclipse将android.jar添加到类path中。

谢谢@亨宁

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

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

如果您的SDKpath有问题,您可以手动创build一个package-list文件(或将$ANDROID_HOME/docs/reference/package-list下的文件复制到您的项目中)。

要使用相对path,不应使用file:/前缀。 如果你把文件放在sub-directory/package-list ,参数就是-linkoffline http://d.android.com/reference sub-directory

对于我们这些敢于转向不断发展的Android Studio&Gradle的人来说,其中一件事实际上起作用并使事情变得容易一些,就是指在本地或在networking上的软件包列表位置。 例如, 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"); 

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