2014-10-23 14 views
28

Il mio team sta sviluppando una libreria Android, da utilizzare in alcune applicazioni di esempio, anch'esse sviluppate da noi. La libreria è creata come un file AAR. Ecco la sua build.gradleCrea libreria Android AAR incluso javadoc e fonti

apply plugin: 'com.android.library' 
apply from: 'deploy.gradle' 

android { 
    compileSdkVersion 20 
    buildToolsVersion '20.0.0' 
    packagingOptions { 
     exclude 'LICENSE.txt' 
     exclude 'LICENSE' 
     exclude 'NOTICE' 
    } 
    defaultConfig { 
     // Excluded for brevity 
    } 
    buildTypes { 
     release { 
      runProguard false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
    lintOptions { 
     abortOnError false 
     // if true, check all issues, including those that are off by default 
     checkAllWarnings true 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.android.support:support-v13:20.0.+' 
    compile 'com.google.android.gms:play-services:5.+' 
    compile 'com.squareup.retrofit:retrofit:1.6.1' 
} 

qui è la parte dipendenze della build.gradle dell'app

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile ('com.mycompany.myapp:[email protected]') { 
     transitive = true 
     downloadJavadoc = true 
     downloadSources = true 
    } 
} 

posso utilizzare tutte le classi lib, ma non riesco a vedere il Javadocs né le fonti . Come posso impacchettare il mio AAR in modo che includa i sorgenti e Javadocs?

+0

'downloadJavadoc' e' downloadSources' non sono supportati in un'istruzione 'compile'; non so da dove viene. Vedi anche http://stackoverflow.com/questions/17426628/how-to-make-android-studio-download-dependencies-sources-and-javadoc, anche se la tua domanda sembra più su come impacchettare quelli nella RAA e non su come fare riferimento a loro quando sono inclusi? –

+0

Corretto, Scott, voglio che i sorgenti e javadoc siano impacchettati all'interno dell'AAR. Altre librerie che stiamo usando (come Retrofit) sono fornite con i sorgenti e javadoc, ma quelle librerie sono confezionate come JARs anziché AARs. – jmm

risposta

9

Sembra che non possa essere fatto per ora. Tuttavia, aggiungendo queste attività gradle nello deploy.gradle, vengono creati -javadoc.jar e -sources.jar.

task androidJavadocs(type: Javadoc) { 
    source = android.sourceSets.main.java.srcDirs 
} 

task androidJavadocsJar(type: Jar) { 
    classifier = 'javadoc' 
    baseName = artifact_id 
    from androidJavadocs.destinationDir 
} 

task androidSourcesJar(type: Jar) { 
    classifier = 'sources' 
    baseName = artifact_id 
    from android.sourceSets.main.java.srcDirs 
} 

artifacts { 
// archives packageReleaseJar 
    archives androidSourcesJar 
    archives androidJavadocsJar 
} 

Dopo di che, le fonti e javadoc devono essere importati manualmente. Secondo this thread e this open issue non possono essere importati automaticamente.

+0

Stai ancora utilizzando questo metodo? Inoltre, che cos'è artifact_id? –

+0

Non lo uso più, mi spiace – jmm

+0

quando rimuovo la riga 'baseName = artifact_id' funziona. –

Problemi correlati