web-dev-qa-db-fra.com

Quelle est la valeur par défaut pour minifyEnabled pour buildType non explicitement scripté?

J'ai importé plusieurs projets Eclipse dans Android Studio (v1.1).

Dans l'environnement Eclipse d'origine, ils utilisent Proguard pour le mode de publication.

Dans l'environnement Android Studio, cela a été traduit comme suit dans le build.gradle script (par l'import, pas par moi):

buildTypes {
    release {
        minifyEnabled true
        proguardFiles 'proguard.cfg'
    }
}

Je comprends que cela signifie que "dans la version release, activez la minify de Proguard, en utilisant proguard.cfg".

Le problème, cependant, est que minify semble également se produire dans la version non publiée (c'est-à-dire le débogage)!

Comment est-ce possible?

Quelle est la valeur par défaut de minifyEnabled pour la version de débogage?


MISE À JOUR 1: Grâce à la réponse ci-dessous, je sais maintenant que la valeur par défaut est false. Ce qui signifie que quelque chose d'autre construit les différents modules minifiés dans la construction de débogage.

Je poste le build.gradle entier pour l'un des modules qui sont minifiés dans la version de débogage:

apply plugin: 'com.Android.library'

Android {
    compileSdkVersion 8
    buildToolsVersion "21.1.2"

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 8
    }

    buildTypes {
        release {
            minifyEnabled true
            proguardFiles 'proguard.cfg'
        }
    }
}

L'ensemble build.gradle pour le projet lui-même (c'est-à-dire le niveau supérieur) est:

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.Android.tools.build:gradle:1.1.0'
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

Je ne trouve rien ici qui pourrait expliquer l'application de minify sur une version de débogage.


MISE À JOUR 2: Vous soupçonnez un décalage entre la construction de l'application (debug) et les modules dont elle dépend (release? ), J'ai également vérifié la vue Build Variant dans le panneau de gauche. Tous affichent debug sans équivoque.


MISE À JOUR 3: Il semble que je frappe n bug/limitation dans Android-Gradle ?

J'ai vraiment besoin de tous les modules construits en mode debug lorsque l'application est construite en mode debug.

Des idées sur la façon de résoudre ce problème?

12
ususer

La valeur par défaut de minifyEnabled est false pour tous les types de build, comme l'a répondu @laalto.

Cependant, actuellement (au 24/04/2015), cela n'est pas vrai pour les projets multi-modules , dans lesquels certains modules (application incluse) sont dépendant sur d'autres modules. Cela est dû à bug # 52962 qui fait que les types de build ne se propagent pas aux bibliothèques - ils sont toujours construits en tant que RELEASE .

Les suggestions pour contourner ce bogue ou les notifications de sa correction sont les bienvenues.

14
ususer

Quelle est la valeur par défaut de minifyEnabled pour la version de débogage?

La valeur par défaut de minifyEnabled est false pour tous les types de build. Référence .

Le problème, cependant, est que minify semble se produire également dans la version non publiée (c'est-à-dire le débogage)!

Comment est-ce possible?

Votre build de débogage reçoit un traitement proguard éventuellement par une autre définition quelque part, ou un script de build externe que vous utilisez.


Dans votre question mise à jour, vous avez un projet de bibliothèque et un projet d'application qui utilise une bibliothèque réduite même pour les versions de débogage. C'est une "fonctionnalité". Pour une solution, considérez les éléments suivants également mentionnés dans le rapport de problème :

Générez toutes les variantes du projet de bibliothèque en ajoutant ce qui suit à son build.gradle:

Android {
    publishNonDefault true
}

Dans le projet d'application, choisissez la dépendance spécifique au type de build avec

dependencies {
    releaseCompile project(path: ':theotherproject', configuration: 'release')
    debugCompile project(path: ':theotherproject', configuration: 'debug')
}
12
laalto