Pourquoi ne Gradle construire mon module en mode Release, lorsque l'application est en cours de Débogage

Je suis en train de faire un nouveau projet Android, avec la norme 'app' module, ainsi qu'un projet de bibliothèque (appelons 'custom_lib'). Dans le app's build.gradle fichier, je l'ai relier le module en tant que tel :

dependencies {
    compile project(':custom_lib')
}

Quand j'déclencher le processus de construction (Menu Build > Make Project), j'obtiens le résultat suivant dans le Gradle console

Executing tasks: [clean, :app:compileDebugSources, :custom_lib:compileDebugSources]
Configuration on demand is an incubating feature.
:app:clean
:custom_lib:clean
:app:preBuild
:app:preDebugBuild
:app:checkDebugManifest
:app:preReleaseBuild
:custom_lib:compileLint
:custom_lib:copyReleaseLint UP-TO-DATE
:custom_lib:mergeReleaseProguardFiles UP-TO-DATE
:custom_lib:preBuild
:custom_lib:preReleaseBuild
:custom_lib:checkReleaseManifest
:custom_lib:prepareReleaseDependencies
:custom_lib:compileReleaseAidl
:custom_lib:compileReleaseRenderscript
:custom_lib:generateReleaseBuildConfig
:custom_lib:generateReleaseAssets UP-TO-DATE
:custom_lib:mergeReleaseAssets
:custom_lib:generateReleaseResValues UP-TO-DATE
:custom_lib:generateReleaseResources
:custom_lib:packageReleaseResources
:custom_lib:processReleaseManifest
:custom_lib:processReleaseResources
:custom_lib:generateReleaseSources
:custom_lib:compileReleaseJava
:custom_lib:processReleaseJavaRes UP-TO-DATE
:custom_lib:packageReleaseJar
:custom_lib:compileReleaseNdk
:custom_lib:packageReleaseJniLibs UP-TO-DATE
:custom_lib:packageReleaseLocalJar UP-TO-DATE
:custom_lib:packageReleaseRenderscript UP-TO-DATE
:custom_lib:bundleRelease
:app:prepareComAndroidSupportAppcompatV72102Library
:app:prepareComAndroidSupportSupportV42102Library
:app:prepareTestDoubleBuildCustom_libUnspecifiedLibrary
:app:prepareDebugDependencies
:app:compileDebugAidl
:app:compileDebugRenderscript
:app:generateDebugBuildConfig
:app:generateDebugAssets UP-TO-DATE
:app:mergeDebugAssets
:app:generateDebugResValues UP-TO-DATE
:app:generateDebugResources
:app:mergeDebugResources
:app:processDebugManifest
:app:processDebugResources
:app:generateDebugSources
:app:compileDebugJava
:app:compileDebugNdk
:app:compileDebugSources
:custom_lib:preDebugBuild
:custom_lib:checkDebugManifest
:custom_lib:prepareDebugDependencies
:custom_lib:compileDebugAidl
:custom_lib:compileDebugRenderscript
:custom_lib:generateDebugBuildConfig
:custom_lib:generateDebugAssets UP-TO-DATE
:custom_lib:mergeDebugAssets
:custom_lib:generateDebugResValues UP-TO-DATE
:custom_lib:generateDebugResources
:custom_lib:packageDebugResources
:custom_lib:processDebugManifest
:custom_lib:processDebugResources
:custom_lib:generateDebugSources
:custom_lib:compileDebugJava
:custom_lib:compileDebugNdk
:custom_lib:compileDebugSources
BUILD SUCCESSFUL
Total time: 2.184 secs

Ce qui m'intrigue, c'est que la construction du mécanisme déclenche une version de Débogage (comme la première ligne dit), mais presque immédiatement, Gradle utilise la tâche :app:preReleaseBuild qui font mon custom_lib module à être construit avec la configuration de Version.

Et puis, après l'application est entièrement construit, Gradle compile mon module avec la configuration de Débogage.

Donc mes questions sont :

  • Pourquoi est-il en train de faire cette double construire ce qui semble incohérent ?
  • Comment puis-je m'assurer que la bibliothèque est construite avec la configuration de débogage lorsque je lance une version de Débogage du processus ?

EDIT :

app/build.gradle :

apply plugin: 'com.android.application'
android {
compileSdkVersion 21
buildToolsVersion "21.1.1"
defaultConfig {
applicationId "com.deezer.testdoublebuild"
minSdkVersion 8
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
buildTypes {
debug{
debuggable true
}
release {
debuggable false
minifyEnabled false
}
}
}
dependencies {
compile project(':custom_lib')
}

custom_lib/build.gradle :

apply plugin: 'com.android.library'
android {
compileSdkVersion 21
buildToolsVersion "21.1.1"
defaultConfig {
applicationId "com.deezer.mylibrary"
minSdkVersion 8
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
}

Note : je suis à l'aide d'Android Studio 1.0 RC 1 /Gradle 2.2, et reproduit ce problème en créant un nouveau projet à partir de zéro, ajouter un vide Android module Bibliothèque, et "voila"

  • Pouvez-vous fournir l'ensemble de votre build.gradle?
  • Gradle outpus ce avec n'importe quelle build.gradle autant que je sache. Je pense que c'est juste une étape, il va à travers et en sortir immédiatement après...
  • Ce n'est pas seulement une étape qui ne fait rien comme il compile mon code de bibliothèque : je vais ajouter la pleine gradle de sortie
  • Gradle fait beaucoup de "pré/vérifier/préparer/...la Libération des" tâches " dans mes projets aussi, mais mon code final est certainement en mode de DÉBOGAGE.
  • Vous ne devriez pas avoir un type de construction pour votre android bibliothèque. En particulier, vous n'aurez pas Proguard sur votre bibliothèque avant de l'utiliser dans votre application. Android libs par défaut à la libération.
  • la bibliothèque est destiné à être publié à un certain point, et une partie de sont va être brouillée avec proguard, mais comme je l'ai développer ce que j'en ai besoin pour être en Debug localement.

InformationsquelleAutor XGouchet | 2014-12-03