JavaDocs mit Android-Plugin erstellen

Wie kann ich JavaDocs für ein Android-Projekt mit dem neuen Gradle-Build-System generieren?

Hier ist, was ich gekommen bin, aber es funktioniert nicht.

  • Aktualisieren Sie Android TextView
  • Ändern von ActionBar- und SearchView-Hintergründen
  • Android getActivity () ist undefiniert
  • Wie kann ich meine Log-Ausgabe von Logcat auf die SD-Card auf einem Android-Gerät umleiten?
  • Verwenden Sie Tab mit neuer ToolBar (AppCompat v7-21)
  • Kann nicht android spielen: icon = "@ mipmap / ic_launcher" in Manifest nach Spieldiensten 7.5.0
  • task generateJavadoc(type: Javadoc) { source = android.sourceSets.main.java.srcDirs ext.cp = android.libraryVariants.collect { variant -> variant.javaCompile.classpath.files } classpath = files(ext.cp) } 

    Das Hauptproblem ist, dass ich nicht den passenden android.jar auf dem Klassenpfad bekomme, so dass einige der Links in den JavaDocs nicht gelöst sind. Ich muss einen Weg finden, um alle notwendigen Gläser auf dem Klassenpfad zu bekommen.

    Ein weiteres Problem mit dem Ansatz, den ich nahm, ist es sammelt die Klassenpfade für alle Build-Varianten, anstatt eine zu wählen.

  • GreenDao Schema Upgrade
  • Android-Kamera: benötigen frontale ODER hintere Kamera
  • Verschieben von Anwendungen auf SD-Karte
  • Android-Einstellung LinearLayout Hintergrund programmgesteuert
  • Android web-basierte Emulator Manymo, wie funktioniert es?
  • Füge Javascript in WebView hinzu
  • 9 Solutions collect form web for “JavaDocs mit Android-Plugin erstellen”

    Für Android gradle plugin 1.1.2+ (com.android.tools.build:gradle:1.1.2+)

    LibraryVariants – funktioniert nicht mehr

    benutzen:

     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 /") – lokalisieren von javadocs im root des projektverzeichnisses (auf diese Weise kann jenkins javadoc plugin es finden und im speziellen Document Panel zeigen)

    FailOnError false – zur Unterdrückung von Warnungen, die zum Ausfall auf Jenkins führen können

    Gradle 1.11 – Gradle Plugin 0.10.0

    Ersetzen Sie android.plugin.sdkDirectory von android.sdkDirectory

     android.libraryVariants.all { variant -> task("generate${variant.name}Javadoc", type: Javadoc) { description "Generates Javadoc for $variant.name." source = variant.javaCompile.source ext.androidJar = "${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar" classpath = files(variant.javaCompile.classpath.files) + files(ext.androidJar) options.links("http://docs.oracle.com/javase/7/docs/api/"); options.links("http://d.android.com/reference/"); exclude '**/BuildConfig.java' exclude '**/R.java' } } 

    Die Lösung, die ich am Ende setzte, ist wie folgt:

     android.libraryVariants.all { variant -> task("generate${variant.name}Javadoc", type: Javadoc) { description "Generates Javadoc for $variant.name." source = variant.javaCompile.source ext.androidJar = "${android.plugin.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar" classpath = files(variant.javaCompile.classpath.files) + files(ext.androidJar) } } 

    Xavier Ducrohet bestätigte dies ist der Weg, es zu tun (mit Vorbehalten) auf der adt-dev-Gruppe, https://groups.google.com/forum/#!searchin/adt-dev/javadoc/adt-dev/seRizEn8ICA/bafEvUl6mzsJ .

    Mit android gradle tools 1.10. + Bekommen die android SDK dir ist anders als vorher. Sie müssen folgendes ändern:

     android.sdkDirectory 

    Anstatt von

     android.plugin.sdkDirectory 

    Dies ist die komplette Lösung für das Problem:

     android.applicationVariants.all { variant -> 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/"); exclude '**/BuildConfig.java' exclude '**/R.java' } } 

    Die android Gläser scheinen in der Eigenschaft android.plugin.runtimeJarList . Es ist aber nicht dokumentiert, also könnte es jederzeit brechen.

    Ich habe Ihre Lösung verfeinert, um über Build-Varianten zu arbeiten:

     android.applicationVariants.all { variant -> def name = variant.name task "javadoc$name"(type: Javadoc) { description = "Generates javadoc for build $name" destinationDir = new File(destinationDir, variant.baseName) source = files(variant.javaCompile.source) classpath = files(android.plugin.runtimeJarList, variant.javaCompile.classpath) exclude '**/R.html', '**/R.*.html' } } 

    Es ist in der Regel nicht sinnvoll, einen Javadoc auf nur den Hauptzweig zu machen, da man sich auf einige Dinge aus den Produkt-Aromen verlassen könnte. Auch Debug vs Release könnte einige Unterschiede haben. Sie könnten natürlich nur eine Standardvariante auswählen. So könntest du so etwas machen,

     task javadoc(dependsOn: javadocDebug) 

    Hier ist eine aktualisierte Version, die mit der neuesten Version funktioniert:

     android.libraryVariants.all { variant -> def name = variant.buildType.name if (name.equalsIgnoreCase("debug")) { return; // Skip debug builds. } task("javadoc${variant.name.capitalize()}", type: Javadoc) { description "Generates Javadoc for $variant.name." source = variant.javaCompile.source ext.androidJar = files(plugins.findPlugin("com.android.library").getBootClasspath()) classpath = files(variant.javaCompile.classpath.files) + ext.androidJar exclude '**/internal/**' failOnError false } task("bundleJavadoc${variant.name.capitalize()}", type: Jar) { description "Bundles Javadoc into zip for $variant.name." classifier = "javadoc" from tasks["javadoc${variant.name.capitalize()}"] } } 

    Ich habe dafür ein Open Source Plugin gemacht. GitHub Repository

     buildscript { repositories { maven { url "https://plugins.gradle.org/m2/" } } dependencies { classpath "gradle.plugin.com.vanniktech:gradle-android-javadoc-plugin:0.2.1" } } 

    Fügen Sie diese Zeile in Ihr build.gradle ein

     apply plugin: "com.vanniktech.android.javadoc" 

    Dann führen Sie einfach eine der folgenden aus:

     ./gradlew generateDebugJavadoc ./gradlew generateReleaseJavadoc 

    Die Java-Dokumentation finden Sie im module/javaDoc/

    Ich habe festgestellt, dass diese Lösung auf Gradle Plugin 1.3.1 funktioniert, wenn Sie unterschiedliche Produktaromen haben.

    Dies wird Gradle-Aufgaben zu generieren Javadoc für jeden Produkt Geschmack und Bauart zu erstellen. Zum Beispiel, wenn der Modulname app und Sie haben eine production und dev Produkt Geschmack und debug und release Build-Typen, haben Sie die folgenden Gradle Aufgaben:

    • : App: generateDevDebugJavadoc
    • : App: generateDevReleaseJavadoc
    • : App: generateProductionDebugJavadoc
    • : App: generateProductionReleaseJavadoc

    app/build.gradle

     android { // ... applicationVariants.all { variant -> // create tasks to generate Javadocs task("generate${variant.name.capitalize()}Javadoc", type: Javadoc) { source = variant.javaCompile.source classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) // choose the destination that works best for you here // I chose this particular directory because Jenkins pulls reports // from this directory already if you need to have the output // folder be parameterized for the build variant, use // "build/outputs/docs/javadoc-${variant.name}/" instead and it'll // be in `javadoc-productionRelease` for example destinationDir = file("build/outputs/docs/javadoc/") // the name that will appear in the docs title = rootProject.name // you will probably get errors from using the @annotations and // the support library, so just turn off failing for errors failOnError false } } // ... } 

    Einer noch

     Android.libraryVariants.all {Variante ->
         If (varant.name.equals ('release'))
             Aufgabe ("generateJavadoc", Typ: Javadoc) {
                 Beschreibung "Javadoc erzeugen"
                 Source = android.sourceSets.main.java.srcDirs
     // println '=== source ==='
     // source.collect {relativePath (it)} .sort (). Jeder {println it}
                 Ext.androidJar = "$ {android.sdkDirectory} / Plattformen / $ {android.compileSdkVersion} /android.jar"
                 Classpath = files (varant.javaCompile.classpath.files) + Dateien (ext.androidJar)
     // println '=== classpath ==='
     // classpath.collect {relativePath (it)} .sort (). Jeder {println it}
             }
     }
    

    Benutzen:

    Gradle erzeugenJavadoc

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.