2016-01-02 12 views
9

sto cercando di preparare e caricare la mia libreria Android per Bintray e parte di questo processo viene eseguito il seguente compito javadoc:Studio Android Javadoc: Impossibile trovare il simbolo

task javadoc(type: Javadoc) { 
    source = android.sourceSets.main.java.srcDirs 
    classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) 
} 

Questa operazione è parte di uno script Gradle più grande qui: https://raw.githubusercontent.com/attwellBrian/JCenter/master/bintrayv1.gradle

Quando l'attività javadoc corre, i seguenti problemi:

  1. Ogni @NonNull e annotazione @Nullable in t egli progetto segnala un errore di "Errore: non riesce a trovare il simbolo"
  2. Ogni riferimento Javadoc ho scritto per una classe di Android, come {Toolbar @link}, segnala un errore di "errore: Riferimento non trovato"

Come posso correggere questi problemi di riferimento durante la generazione di Javadoc?

EDIT Sembra che la sua non tutti i link di classe Android che stanno creando un problema, potrebbe essere solo le classi che vengono dalla libreria di supporto di Android (che è anche il luogo dove le annotazioni provengono). È necessario fare qualcosa di speciale per collegarsi ai file sorgente nelle dipendenze gradle?

risposta

18

È inoltre necessario aggiungere tutta la propria dipendenza a javadoc.classpath. Prova questo:

task javadoc(type: Javadoc) { 
    source = android.sourceSets.main.java.srcDirs 
    classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) 
} 

afterEvaluate { 
    javadoc.classpath += files(android.libraryVariants.collect { variant -> 
     variant.javaCompile.classpath.files 
    }) 
} 
+1

Benvenuti a StackOverflow, prego non basta inviare codice, ma anche spiegare cosa sta facendo il tuo codice e perché funziona. –

+0

Puoi spiegare perché dobbiamo aggiungere quei file in "afterEvaluate" invece di aggiungerli direttamente nell'attività "javadoc()"? – MattC

+0

Purtroppo il corpo del task javadoc viene chiamato prima che 'android.libraryVariants' venga riempito. Quindi dobbiamo aspettare che 'android.libraryVariants' sia pieno. – xkor

0

Quindi questi errori vuol dire che JavaDoc non può collegare le classi che non sono nello stesso modulo (senza ulteriori config). Se non si cura di questo (cioè. Avendo collegamenti ipertestuali a classi al di fuori del modulo) si può solo ignorare gli errori con

task javadoc(type: Javadoc) { 
    failOnError false 
    source = android.sourceSets.main.java.srcDirs 
    classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) 
} 

See here for more info on the Javadoc Task