2010-05-12 7 views
23

Als ich javadoc für mein Android-Projekt in Eclipse zu generieren, gibt es viele Warnungen wieWie generiere ich Links zur Referenz der android Klassen in Javadoc?

cannot find symbol 
symbol : class TextView 

und

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

Ich habe auch versucht

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

in Extra javadoc options (path names with white spaces must be enclosed in quotes) Registerkarte in Configure Javadoc Arguments (3. Dialog von Eclipse-> Projekt-> Javadoc generieren.

Aber nur -link http://java.sun.com/j2se/1.4.2/docs/api/ funktioniert, d. H. Für String-Klasse Link http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html?is-external=true generiert wird. aber für android.app.Dialog wird keine Verbindung generiert.

bearbeiten

Ich habe auch versucht android.jar in Select referenced archives and projects to which links should be generated Registerkarte in Configure Javadoc arguments for standard doclet (2. Dialog von Eclipse-> Ausbau-> Generieren Javadoc) Auswählen, aber dies erzeugt lokale Links zu docs in lokalen android-sdk-Verzeichnis NICHT die Online-Android-Verweise wie für Java-APIs.

Antwort

42

Javadoc benötigt eine Datei namens package-list, um festzustellen, welche Java-Pakete unterhalb eines bestimmten Verzeichnisses dokumentiert sind. Aus irgendeinem Grund, eine solche Datei ist für http://d.android.com/reference/ fehlt daher die „naive“ Ansatz mit

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

nicht – Sie eine Warnung funktioniert, dass das Paket-Liste konnte nicht abgerufen werden und keine Links sind in Ihre Dokumente generiert. (Hinweis: Die Kontrollkästchen in diesem 2. Eklipse Dialog zusammenbauen nur -link Parameter für Sie, so dass wirklich keinen Unterschied machen)

jedoch Javadoc bietet die -linkoffline Parameter für genau diese Situation anpassen zu können: Sie möchten online eine Verknüpfung mit einer anderen Javadoc-Dokumentation herstellen, aber Sie können nicht darauf zugreifen, wenn Sie Ihre eigenen Dokumente erstellen. Und so funktioniert es: Während -link nur einen Parameter benötigt (die URL der JavaDoc-Dokumente, die Sie verknüpfen möchten), nimmt -linkoffline eine zweite. Dieser ist der Standort der package-list Datei!

So in die Online-Android-Referenzdokumentation zu verknüpfen, sollten Sie keine Kontrollkästchen in dem 2. Eklipse Dialog wählen, sondern

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

in den Extra-Javadoc Optionen im 3. Dialog hinzufügen . Auf diese Weise verwenden Sie die package-list Ihrer lokal installierten Android-Dokumente, aber die Links in Ihrem generierten Javadoc zeigen trotzdem auf die Online-Version.

Hoffe es hilft!

+0

Danke Henning, es hat funktioniert !! Ich hatte wirklich viel Zeit damit verbracht, dies zu lösen, aber nicht gelungen. Danke vielmals. – Vasu

+1

Ich kann nicht scheinen, den Dateipfad im zweiten Argument auf Mac OS X zu korrigieren. – idolize

+0

danke für den Tipp, aber ich konnte es nicht für mich arbeiten. Insbesondere verwende ich Eclipse unter Windows. Mein Javadoc enthält Verweise wie "{@link android.widget.Toast}". Wenn ich "Javadoc generieren ..." wähle, überprüfe ich nichts auf dem zweiten Bildschirm und schließe die zusätzliche Javadoc-Option "-linkoffline http://d.android.com/reference file:" \ C: \ Program ein Dateien (x86) \ Android \ android-sdk-windows \ docs \ "'. Javadoc wird ohne Fehler generiert, aber es enthält 'android.widget.Toast', wo ich einen Link erwartet habe. Irgendwelche Vorschläge? Vielen Dank. –

1

Obwohl ich nach oben Antwort hier folgte, fand ich, dass ich es nur funktionieren konnte, wenn ich eine Ant-Build-Datei (javadoc.xml) exportiert und die android.jar-Datei manuell dem Klassenpfad hinzugefügt. Mein Javadoc.xml wie folgt aussieht:

<?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> 

ich dann das Dokument ant -f javadoc.xml mit erzeugen könnte. Ich konnte keine Möglichkeit finden, dies über die Eclipse-GUI richtig zu tun, da Eclipse selbst beim Auswählen des korrekten referenzierten Archivs keine android.jar zum Klassenpfad hinzufügte.

+1

Wenn Sie Eclipse Indigo verwenden, können Sie im vierten Frame des Exports von Javadoc in die Box _Extra Javadoc options_ den Wert des Attributs 'additionalparam' einfügen. –

2

Nach ein wenig Versuch und Irrtum (Und viele Vorschläge aus mehreren Websuchen), ich konnte dies mit einem bestimmten ANT-Skript arbeiten, die in Eclipse von "Ausführen als -> Ant Build ausgeführt werden kann ".

Ich habe diese Datei "javadoc.xml" im Verzeichnis meines Projekts parallel zur Datei AndroidManifest.xml gespeichert. Hier

ist der Inhalt der Datei:

<?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> 
+1

Sie sollten den Pfad zu Ihren lokalen Dateien erklären ... –

0

Wenn Sie Probleme mit dem Pfad zu dem SDK können Sie manuell erstellen package-list Datei (oder den unter $ANDROID_HOME/docs/reference/package-list kopieren) zu Ihrem Projekt.

Um einen relativen Pfad zu verwenden, sollten Sie das Präfix file:/ nicht verwenden. Wenn Sie die Datei in sub-directory/package-list das Argument setzen wäre -linkoffline http://d.android.com/reference sub-directory

1

Dank @Henning

Hier ist, was ich in ant build.xml Datei benötigt:

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

Das hat nicht für mich funktioniert. Ich habe diese Antwort http://stackoverflow.com/a/5193647/624109 verwendet – Muzikant

0

Für diejenigen von uns genug gewagt zu haben, auf das sich ständig weiterentwickelnde Android Studio & Gradle umgestellt, eines der Dinge, die tatsächlich funktionieren und die Dinge etwas einfacher machen, bezieht sich auf einen Paketlisten-Ort, entweder lokal oder im Internet. Beispielsweise erzeugt der folgende Code aus Julian javadoc Dateien:

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' 
} 

Aber dies führte zu einer Warnung während des Build, da die Paket-Liste nicht mehr zur Verfügung steht

(wenn es jemals war)
options.links("http://developer.android.com/reference/reference/"); 

zuerst dachte ich, vielleicht die redundante Referenz/Referenz das Problem war, aber die Paket-Liste war auch

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

Also, nach dem Lesen der Diskussion auf

nicht verfügbar auf diesem Thread kann, dass eine Zeile an dem lokalen Bezug Verzeichnis innerhalb des SDK beziehen geändert werden:

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

Sie findet die Paket-Liste lokal und mehr nicht die Warnmeldung angezeigt werden soll.

Verwandte Themen