2016-01-02 13 views
9

Ich versuche, meine Android-Bibliothek Bintray und ein Teil dieses Prozesses führt die folgende javadoc Aufgabe vorbereiten und hochladen:Android Studio Javadoc: nicht gefunden Symbol

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

Diese Aufgabe ist Teil eines größeren gradle Skript hier: https://raw.githubusercontent.com/attwellBrian/JCenter/master/bintrayv1.gradle

Wenn die javadoc Aufgabe ausgeführt wird, treten die folgenden Probleme:

  1. Jeder @NonNull und @Nullable Anmerkung in t er Projekt meldet einen Fehler von „Fehlern: kann nicht Symbol finden“ „: Referenz nicht gefunden Fehler“
  • Jede Javadoc Referenz ich geschrieben habe für eine Android-Klasse, wie {@link Toolbar}, meldet einen Fehler von

    Wie kann ich diese Referenzprobleme beim Generieren von Javadocs korrigieren?

    EDIT Es ist wie seine nicht alle Android-Klasse Links sieht, die eine Ausgabe erstellen, kann es nur Klassen, die aus der Android Support-Bibliothek kommen (wo auch die Anmerkungen aus kommen). Muss etwas Besonderes getan werden, um in Quellabhängigkeiten auf Quelldateien zu verlinken?

  • Antwort

    18

    Sie sollten auch alle Ihre Abhängigkeit zum javadoc.classpath hinzufügen. Versuchen Sie folgendes:

    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

    Willkommen ignorieren könnten zu Stackoverflow, bitte nicht nur Code schreiben, sondern auch erklären was dein Code macht und warum er funktioniert. –

    +0

    Können Sie erklären, warum wir diese Dateien in "afterEvaluate" hinzufügen müssen, anstatt sie direkt in die Aufgabe "javadoc()" einzufügen? – MattC

    +0

    Leider wird der Körper der Javadoc-Aufgabe aufgerufen, bevor 'android.libraryVariants' gefüllt ist. Also müssen wir warten, bis 'android.libraryVariants' gefüllt ist. – xkor

    0

    Also diese Fehler, dass JavaDoc kann nicht bedeuten, die Klassen verbinden, die nicht im gleichen Modul sind (ohne weitere Konfiguration). Wenn Sie nicht über diese kümmern (dh. Hyperlinks zu Klassen außerhalb des Moduls hat) Sie nur die Fehler mit

    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

    Verwandte Themen