Comment inclure POT de dépendance dans l'AAR, de la bibliothèque

Résumé:

J'ai un AAR fichier qui dépend d'un fichier JAR, lorsque je construis l'AAR projet, il ne contient pas le POT de code.

Détails:

J'ai un SDK Java projet de bibliothèque qui contient le code que nous utilisons pour la Java des projets web et une telle, cette bibliothèque est créée à l'aide de Gradle et qui réside dans un intérieur serveur nexus (comme un POT).

Le but est de fournir un "Android configuré" la version de ce POT de la bibliothèque par le biais de l'AAR, de la bibliothèque que de multiples Applications Android peuvent utiliser et minimiser l'effort (et le code réutilisable) pour la mettre en œuvre. Cette AAR fichier est téléchargé vers le serveur nexus pour être utilisé par les projets d'Applications Android.

Mon AAR projet comprend un gradle dépendance pour mon SDK Java de la bibliothèque (le POT) mais lors de la construction, de l'AAR ne comprennent pas les classes.

Code:

C'est le SDK Java du projet gradle fichier:

apply plugin: 'java'

//noinspection GroovyUnusedAssignment
sourceCompatibility = 1.7
version = '1.1.1'

repositories {
    mavenCentral()
}

jar {
    from {
        configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
    }
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.11'
    testCompile 'org.apache.directory.studio:org.apache.commons.io:2.4'
    compile 'org.springframework:spring-web:3.1.1.RELEASE'
    compile 'com.google.code.gson:gson:2.3'
}

C'est le gradle fichier pour mon AAR Projet, notez que j'ai enlevé le repository Maven déclarations de mon serveur nexus. Je suppose que ça ne compte pas pour le bien de cette question.

apply plugin: 'com.android.library'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.1"

    defaultConfig {
        minSdkVersion 16
        targetSdkVersion 23
        versionCode 1
        versionName "2.2.2"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    lintOptions {
        abortOnError false
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.1.0'

    compile ('com.mycompany:javasdk:1.1.1')
}

C'est le gradle fichier pour mon Projet Android, encore une fois j'ai enlevé le serveur nexus références:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.1"

    defaultConfig {
        applicationId "com.mycompany.application1"
        minSdkVersion 16
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.1.0'

    compile ('com.mycompany:androidsdk:2.2.2@aar')
}

REMARQUE: au départ, j'ai résolu le problème en ajoutant le JAR dans le répertoire lib de l'AAR projet, mais ce n'est pas souhaitable. Il permet d'avoir un serveur nexus inutile. Il serait bon que nous puissions remonter le BOCAL du numéro de version dans l'AAR du projet gradle fichier et la mise à jour se fait automatiquement au moment de la compilation.

NOTE2: j'ai essayé d'ajouter transitive=true à mon AAR dépendance dans le Projet Android, mais ça n'a pas résolu quoi que ce soit, le vrai problème est que lors de la construction de l'AAR projet, le POT de code de projet n'obtient pas livré.

OriginalL'auteur rastadrian | 2015-10-30