Как создать ссылки на ссылку классов 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");

он находит список пакетов локально и больше не отображает предупреждающее сообщение.