当我在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引用。
答案 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");
它在本地找到包列表,不再显示警告消息。