Documentation Gradle, Javadoc et Android

J'utilise maintenant Gradle pour tous mes projets, et même pour la génération javadoc.

android.libraryVariants.all { variant ->

    task("generate${variant.name}Javadoc", type: Javadoc) {
        title = "$name $version API"
        source = variant.javaCompile.source
        ext.androidJar = "${android.plugin.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar"
        ext.googlePlayServicesJar = "${android.plugin.sdkDirectory}/extras/google/google_play_services/libproject/google-play-services_lib/libs/google-play-services.jar"
        classpath = files(variant.javaCompile.classpath.files, ext.androidJar, ext.googlePlayServicesJar)
        options.links("http://docs.oracle.com/javase/7/docs/api/");
        options.links("http://d.android.com/reference/");
        //options.linksOffline("http://d.android.com/reference", "${android.plugin.sdkDirectory}/docs/reference");
        exclude '**/BuildConfig.java'
        exclude '**/R.java'
    }

}

avec ce code, Tout fonctionne, sauf une chose: les objets ordinaires de L'API Android comme Activity, Bitmap, etc. Les liens de Java fonctionnent bien.

La finale de la documentation générée n' lien à http://d.android.com/reference. J'ai essayé les deux options.liens() et options.linksOffline() sans succès.

EDIT

grâce à @ejb, le problème est que vous ne pouvez pas fournir plusieurs options.links() en même temps. J'ai donc utilisé à la fois options.links() pour la documentation de Java et <!-Pour la documentation de Android:

options {
    links("http://docs.oracle.com/javase/7/docs/api/");
    linksOffline("http://d.android.com/reference", "${android.plugin.sdkDirectory}/docs/reference");
    //stylesheetFile = new File(projectDir, "stylesheet.css");
}
25
demandé sur shkschneider 2014-04-25 19:44:15

2 réponses

j'ai pu avec succès lien http://d.android.com/reference à l'aide de l'extrait de code suivant qui est fonctionnellement exactement ce que vous avez (autant que je puisse en dire).

 android.libraryVariants.all { variant -> 
   task("generate${variant.name.capitalize()}Javadoc", type: Javadoc) {
     // title = ''
     // description = ''
     source = variant.javaCompile.source 
     classpath = files(variant.javaCompile.classpath.files, project.android.getBootClasspath()) 
     options { 
       links "http://docs.oracle.com/javase/7/docs/api/" 
       linksOffline "http://d.android.com/reference","${android.sdkDirectory}/docs/reference" 
     } 
     exclude '**/BuildConfig.java' 
     exclude '**/R.java' 
   } 
 }

il y a donc autre chose qui ne va pas ici.

vous devez construire le javadoc hors ligne, comme il ne semble pas le package-list est disponible sur le chemin du service web. Vérifiez peut-être que vous avez chargé les documents localement, et assurez-vous que il y a un package-list dans le /[android-sdk]/docs/reference répertoire.

si vous ne pouvez toujours pas le comprendre, peut-être que vous pourriez afficher la sortie.

une autre chose que vous pouvez vérifier est le ./build/tmp/[taskname]/javadoc.options, le head de ce fichier doit montrer les options appropriées soigneusement définies. Choses à vérifier pour comprendre l'inclusion de l'androïde.jar dans le-classpath et la présence de linksOffline avec les arguments attendus:-linksoffline extDocURL packageListLoc

javadoc.options devrait avoir les deux options avec seulement les arguments respectifs:

-linksoffline 'http://d.android.come/reference' '[sdkDir]/docs/reference'
-links 'http://docs.oracle.com/javase/7/docs/api/' 

EDIT:android.getBootClasspath() est plus agréable, grâce à la P-chan.

27
répondu ejb 2015-03-03 09:54:36

Android plugin Gradle 1.1.2+ (com.Android.outils.construire:gradle:1.1.+)

libraryVariants - ne fonctionne plus

utilisation:

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

destinationDir = file ("../ javadoc/") - localisez javadocs à la racine du répertoire de projet (de cette façon jenkins Javadoc plugin pourrait le trouver et l'afficher dans le panneau de Document spécial)

failOnError false - pour supprimer les avertissements qui peut causer l'échec construire sur jenkins


Alternative pour Gradle Javadoc

Doxygen - outil de documentation de références croisées.

peut être exécuté à partir de L'interface utilisateur ou du terminal:http://www.stack.nl/~dimitri/doxygen/manual/doxygen_usage.html


Génération javadoc disponible jeter java outil: ' javadoc'

exécuter de commande ligne:

javadoc -d docs -sourcepath app/src/main/java -subpackages com

docs - dossier de destination

14
répondu Flinbor 2015-04-07 12:31:47