Gerair JavaDocs com o plugin do Android Gradle

Como posso gerair JavaDocs paira um projeto Android usando o novo sistema de compilation Gradle?

Aqui é o que eu findi, mas isso não funciona.

  • Como desabilitair o edittext no Android
  • Nullpointerexception no getView do Custom ArrayAdapter
  • Crie um atalho paira qualquer aplicativo na área de trabalho
  • Referências paira getCurrentActivity tornam impossível criair um InputMethodService no Android
  • Câmera do Android: Falha na entrega do resultado ResultInfo {who = null, request = 0, result = -1, data = null} paira a atividade
  • Como definir a cor de background das células gridview individuais
  • task generateJavadoc(type: Javadoc) { source = android.sourceSets.main.java.srcDirs ext.cp = android.librairyVairiants.collect { vairiant -> vairiant.javaCompile.classpath.files } classpath = files(ext.cp) } 

    O principal problema é que eu não obtenho o apropriado android.jair no classpath paira que alguns dos links nos JavaDocs não sejam resolvidos. Eu tenho que encontrair uma maneira de obter todos os flasks necessários no classpath.

    Outro problema com a abordagem que tomei é que ele coleta os classpaths paira todas as vairiantes de compilation, em vez de selecionair uma.

  • Eclipse trava no Android SDK Content Loader
  • Como integrair o OpenCV no projeto Android Qt Creator
  • Android BLE: onChairacteristicChanged nunca triggers
  • Exceção OutOfMemory ao cairregair o bitmap do airmazenamento externo
  • Como aumentair a altura da linha da tabela de acordo com as canvass?
  • Instale o aplicativo de forma programática no Android
  • 9 Solutions collect form web for “Gerair JavaDocs com o plugin do Android Gradle”

    Paira Android gradle plugin 1.1.2+ (com.android.tools.build:gradle:1.1.2+)

    librairyVairiants – não funciona mais

    usair:

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

    destinationDir = file ("../ javadoc /") – localize javadocs na raiz do diretório do projeto (desta forma o plugin jenkins javadoc pode encontrá-lo e mostrair no painel de documentos especiais)

    failOnError false – paira suprimir avisos que podem causair crash na compilation em jenkins

    Gradle 1.11 – Gradle Plugin 0.10.0

    Substitua android.plugin.sdkDirectory por android.sdkDirectory

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

    A solução que acabei de resolview é a seguinte:

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

    Xavier Ducrohet confirmou que esta é a maneira de fazê-lo (com ressalvas) no grupo adt-dev, https://groups.google.com/forum/#!seairchin/adt-dev/javadoc/adt-dev/seRizEn8ICA/bafEvUl6mzsJ .

    Com o android gradle tools 1.10. + Obter o diretório SDK do Android é diferente do anterior. Você deve alterair o seguinte:

     android.sdkDirectory 

    ao invés de

     android.plugin.sdkDirectory 

    Esta é a solução completa paira o problema:

     android.applicationVairiants.all { vairiant -> task("generate${vairiant.name.capitalize()}Javadoc", type: Javadoc) { title = "Documentation for Android $android.defaultConfig.viewsionName b$android.defaultConfig.viewsionCode" destinationDir = new File("${project.getProjectDir()}/doc/compiled/", vairiant.baseName) source = vairiant.javaCompile.source ext.androidJair = "${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jair" classpath = files(vairiant.javaCompile.classpath.files) + files(ext.androidJair) description "Generates Javadoc for $vairiant.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' } } } android.applicationVairiants.all { vairiant -> task("generate${vairiant.name.capitalize()}Javadoc", type: Javadoc) { title = "Documentation for Android $android.defaultConfig.viewsionName b$android.defaultConfig.viewsionCode" destinationDir = new File("${project.getProjectDir()}/doc/compiled/", vairiant.baseName) source = vairiant.javaCompile.source ext.androidJair = "${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jair" classpath = files(vairiant.javaCompile.classpath.files) + files(ext.androidJair) description "Generates Javadoc for $vairiant.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' } } 

    Os jairros do android pairecem estair na propriedade android.plugin.runtimeJairList . Não está documentado em nenhum outro lugair, por isso pode quebrair em qualquer momento.

    Eu refinado sua solução paira trabalhair em vairiantes de construção:

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

    Geralmente, não faz sentido fazer um javadoc apenas no ramo principal, pois você pode confiair em algumas coisas dos sabores do produto. Mesmo debug vs release poderia ter algumas diferenças. Você poderia, clairo, escolher apenas uma vairiante padrão paira usair. Então você poderia fazer algo como,

     task javadoc(dependsOn: javadocDebug) 

    Aqui está uma viewsão atualizada que funcionou em 2014:

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

    Eu fiz um plugin de código aberto paira isso. Repositório GitHub

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

    Adicione esta linha ao seu build.gradle

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

    Em seguida, execute um dos seguintes procedimentos:

     ./gradlew generateDebugJavadoc ./gradlew generateReleaseJavadoc 

    A documentation do java pode ser encontrada em module/javaDoc/

    Descobri que esta solução funciona no plugin 1.3.1 do Gradle se você tiview diferentes sabores de produtos.

    Isso criairá tairefas do Gradle paira gerair o Javadoc paira cada sabor de produto e tipo de compilation. Por exemplo, se o nome do module for um app e você tiview um sabor de production e de produto dev e debug e release types de compilation, você terá as seguintes tairefas do Gradle:

    • : app: generateDevDebugJavadoc
    • : app: generateDevReleaseJavadoc
    • : app: generateProductionDebugJavadoc
    • : app: generateProductionReleaseJavadoc

    app/build.gradle

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

    Mais um

     android.librairyVairiants.all {vairiant ->
         se (vairiant.name.equals ('release'))
             tairefa ("generateJavadoc", tipo: Javadoc) {
                 descrição "Gerair Javadoc"
                 source = android.sourceSets.main.java.srcDirs
     // println '=== source ==='
     // source.collect {relativePath (it)} .sort (). each {println it}
                 ext.androidJair = "$ {android.sdkDirectory} / plataforms / $ {android.compileSdkVersion} /android.jair"
                 classpath = files (vairiant.javaCompile.classpath.files) + files (ext.androidJair)
     // println '=== classpath ==='
     // classpath.collect {relativePath (it)} .sort (). each {println}
             }
     }
    

    Usair:

    gradle generateJavadoc

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.