studio - Come generare collegamenti al riferimento delle classi Android in javadoc?




modify toolbar android studio (4)

Quando genero javadoc per il mio progetto Android in Eclipse, ci sono molti avvisi come

cannot find symbol
symbol  : class TextView

e

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

Ho anche provato

-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) in Configure Javadoc Arguments (terza finestra di dialogo di eclipse-> progetto-> Genera Javadoc).

Ma solo -link http://java.sun.com/j2se/1.4.2/docs/api/ funziona, ad es. Per il link alla classe String http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html?is-external=true viene generato. ma per android.app.Dialog , non viene generato alcun collegamento.

modificare

Ho anche provato a selezionare android.jar in Select referenced archives and projects to which links should be generated scheda Select referenced archives and projects to which links should be generated in Configure Javadoc arguments for standard doclet (2a finestra di dialogo di eclipse-> progetto-> Genera Javadoc), ma questo crea collegamenti locali a documenti in locale directory android-sdk, NON i riferimenti Android online come per le API Java.

https://code.i-harness.com


Anche se ho seguito la risposta principale qui, ho scoperto che avrei potuto farlo funzionare solo se avessi esportato un file di build ant (javadoc.xml) e aggiunto manualmente il file android.jar al classpath. Il mio javadoc.xml ha il seguente aspetto:

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

Potrei quindi generare il documento usando ant -f javadoc.xml . Non sono riuscito a trovare un modo per farlo correttamente dalla GUI di Eclipse, in quanto anche selezionando l'archivio di riferimento corretto non si è verificato che Eclipse aggiungesse android.jar al classpath.


Dopo un po 'di tentativi ed errori (e un sacco di suggerimenti ricavati da più ricerche sul web), sono riuscito a farlo funzionare con uno specifico script ANT, che può essere eseguito in Eclipse da "Esegui come -> Ant Build".

Ho salvato questo file, "javadoc.xml", nella directory del mio progetto, in parallelo con il file AndroidManifest.xml.

Ecco il contenuto del file:

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

Javadoc si basa su un file chiamato package-list per determinare quali pacchetti Java sono documentati sotto una determinata directory. Per qualche ragione, tale file manca per http://d.android.com/reference/ , quindi l'approccio "ingenuo" con

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

non funziona - ricevi un avvertimento che l'elenco dei pacchetti non può essere recuperato e nessun link viene generato nei tuoi documenti. (Nota: le caselle di controllo in quella seconda finestra di dialogo dell'eclisse si limitano a assemblare i parametri di -link per te, quindi non fa alcuna differenza)

Tuttavia, Javadoc offre il parametro -linkoffline per essere in grado di regolare esattamente questa situazione: si desidera collegarsi ad altra documentazione di Javadoc online, ma non è possibile accedervi al momento della generazione dei propri documenti. Ecco come funziona: While -link accetta solo un parametro (l'URL dei documenti JavaDoc a cui desideri collegare), -linkoffline prende un secondo. Quella è la posizione del file package-list !

Pertanto, per collegarsi alla documentazione di riferimento online di Android, non selezionare alcuna casella di controllo nella seconda finestra di dialogo di eclissi, ma aggiungere

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

nelle opzioni Extra Javadoc nella terza finestra di dialogo. In questo modo usi l' package-list dei package-list dei tuoi documenti Android installati localmente, ma i collegamenti nel tuo Javadoc generato rimarranno comunque nella versione online.

Spero che sia d'aiuto!


Per quelli di noi abbastanza audaci da passare al sempre in evoluzione Android Studio & Gradle, una delle cose che funziona davvero e rende le cose un po 'più semplici è riferirsi a una posizione di elenco di pacchetti sia localmente che sul web. Ad esempio, il seguente codice di Julian genera file 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'
}

Ma questo ha provocato un avvertimento durante la compilazione perché l'elenco dei pacchetti non è più disponibile (se mai lo era) a

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

All'inizio ho pensato che forse il riferimento / riferimento ridondante era il problema, ma l'elenco dei pacchetti non era disponibile a

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

Quindi, dopo aver letto la discussione su questo thread, quella riga può essere cambiata per fare riferimento alla directory di riferimento locale all'interno dell'SDK:

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

Trova la lista dei pacchetti localmente e non mostra più il messaggio di avviso.







javadoc