Как создать ссылки на ссылку классов android в javadoc?
когда я генерирую javadoc для моего проекта Android в Eclipse, есть много предупреждений, таких как
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
(3-й диалог eclipse - >project - >Generate Javadoc).
, но только -link http://java.sun.com/j2se/1.4.2/docs/api/
работает i.e для класса String
ссылка 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
вкладка в Configure Javadoc arguments for standard doclet
(2-й диалог eclipse - > project - >Generate Javadoc),
но это создает локальные ссылки на документы в локальном каталоге Android-sdk, а не онлайн-ссылки на Android, как для Java APIs.
6 ответов
Javadoc полагается на файл с именем package-list
чтобы определить, какие пакеты Java документированы ниже данного каталога. По какой-то причине, такой файл отсутствует для http://d.android.com/reference/, поэтому "наивный" подход с
-link http://d.android.com/reference/
не работает-вы получаете предупреждение о том, что список пакетов не может быть получен и ссылки не генерируются в ваших документах. (Примечание: флажки в этом 2-м диалоговом окне eclipse просто собирают -link
параметры для вас, так что на самом деле это не имеет никакого значения)
тем не менее, Javadoc предлагает !
Итак, чтобы перейти по ссылке на онлайн-справочную документацию Android, вы должны не установите флажки во 2-м диалоговом окне eclipse, но вместо этого добавьте
-linkoffline http://d.android.com/reference file:/C:/pathtoyour/android-sdk-windows/docs/reference
на Дополнительные параметры Javadoc в 3-м диалоге. Таким образом, вы используете package-list
ваших локально установленных документов Android, но ссылки в вашем сгенерированном Javadoc все равно будут указывать на онлайн-версию.
надеюсь, что это помогает!
после нескольких проб и ошибок (и множество предложений, полученных из нескольких веб-поисков), я смог получить эту работу с определенным скриптом ANT, который можно запустить в Eclipse с помощью "Run As - > Ant Build".
Я сохранил этот файл, " 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 (javadoc.xml) и вручную добавил android.jar-файл в classpath. Мой документации.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, так как даже выбор правильного архива ссылок не заставил Eclipse добавить android.фляги в classpath.
Спасибо @Henning
вот что мне нужно в Ant build.xml-файл:
<link offline="true" href="http://d.android.com/reference" packagelistLoc="${android.home}/docs/reference"/>
если у вас возникли проблемы с путем к SDK, вы можете вручную создать package-list
file (или скопируйте один под $ANDROID_HOME/docs/reference/package-list
) к вашему проекту.
чтобы использовать относительный путь, вы не должны использовать file:/
префикс. Если вы поместите файл в sub-directory/package-list
аргумент будет -linkoffline http://d.android.com/reference sub-directory
для тех из нас, кто достаточно смел, чтобы переключиться на постоянно развивающуюся Android Studio & Gradle, одна из вещей, которая на самом деле работает и делает вещи немного проще, относится к местоположению списка пакетов локально или в интернете. Например, следующий код Юлиан генерирует файлы 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'
}
но это привело к предупреждению во время сборки, потому что список пакетов больше не доступен (если он когда-либо был) at
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");
он находит список пакетов локально и больше не отображает предупреждающее сообщение.