web-dev-qa-db-fra.com

Différentes dépendances pour le débogage et la publication dans gradle et Android Studio

J'ai un projet Android, qui dépend du pur projet Java. Les deux dépendent d'une autre bibliothèque Java, également dans mon gradle multiprojet défini dans Android Studio. J'ai deux versions de cette bibliothèque et je veux les deux Android et Java dépendre de l'un d'eux en mode débogage, et un autre - en version.

Est-il possible pour le projet Android? Pour le projet Java Java pur? Comment?

48
Meteorite

Les types de build (débogage, version ou personnalisé) peuvent avoir leurs propres dépendances.

Pour spécifier une dépendance spécifique à un type de build, procédez comme suit:

dependencies {
    debugCompile "mydebugdependency"
    releaseCompile "myreleasedependency"
}

Si votre Java et Android utilisent tous deux gradle, vous pouvez effectuer les opérations ci-dessus dans leurs deux fichiers build.gradle).

58
athor

Ma dépendance buildDebug était également ignorée. Ma configuration est le module d'application et un module de bibliothèque, et j'ai besoin de propager le type de construction de l'application aux modules de bibliothèque, c'est-à-dire que lorsque je compile le type de débogage sur l'application, je veux également obtenir le type de débogage de bibliothèque.

Comme mentionné, j'ai essayé d'avoir une dépendance spécifique pour chaque type de build sur le app gradle fichier, mais en vain:

buildTypes {
    debug {
        debuggable true
        applicationIdSuffix ".debug"

        dependencies {
            debugCompile project(":library")
        }
    }
}

En fin de compte, ce qui m'a fait l'affaire: http://tools.Android.com/tech-docs/new-build-system/user-guide#TOC-Library-Publication

Donc, maintenant, la dépendance de bibliothèque est gérée (comme d'habitude) dans la portée des dépendances globales dans le app gradle fichier:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    releaseCompile project(path: ':library', configuration: 'release')
    debugCompile project(path: ':library', configuration: 'debug')
}

et a dû ajouter ceci au fichier de construction gradle de la bibliothèque:

Android {
    publishNonDefault true
}

Cela publie tous les types de build des dépendances. Notez que si la compilation de votre dépendance prend beaucoup de temps, cette solution peut ne pas vous convenir.

36
takecare

Vous pouvez le faire en utilisant le modèle suivant

build_variant_name dependency_configurations "dependency"
build_variant_name dépendances_configurations projet (chemin: ': libName', configuration: 'build_variant_name of libName')

Par exemple

dependencies {

    FreeDebugImplementation "dependency"
    PaidReleaseApi project(path: ':libName', configuration: 'release')
}

Vous pouvez en savoir plus sur les variantes de build - https://developer.Android.com/studio/build/build-variants configurations de dépendances - https://developer.Android.com/studio/build/gradle-plugin-3-0-0-migration # new_configurations

3
yoAlex5