2017-03-23 1 views
0

J'utilise DexGuard et j'ai 4 types de produits (prod, qa, dev, mock) pour 2 types de build (release et debug) et je n'accepte pas DexGuard pour les builds debug et donc je reçois 4 variantes (dexguardProdRelease ... dexguardMockRelease) Cependant, je ne veux pas activer DexGuard pour les saveurs dev et mock.Désactiver DexGuard uniquement pour certaines saveurs de produits

J'ai appris environ variantFilter que Gradle fournit cependant, je ne sais pas comment utiliser cette commande par rapport à un plugin, DexGuard, dans ce cas.

Répondre

1

j'ai pu résoudre comme ceci:

//added to filter dexguard for these flavors 
variantFilter { variant -> 
    def names = variant.flavors*.name 

    if(names.contains("mock") && variant.buildType.name == "release") { 
     variant.ignore = true 
    } else if (names.contains("dev") && variant.buildType.name == "release") { 
     variant.ignore = true 
    } 
} 

Et maintenant, Gradle ne montre pas des tâches telles que dexguardMockRelease ou dexguardDevRelease.

Je n'abordais pas ce problème de manière incorrecte en examinant le filtrage DexGuard à la place je devrais chercher à supprimer certains arômes. Voici les parties pertinentes de mes build.gradle:

apply plugin: 'dexguard' 
... 
android { 
     buildTypes { 
      release { 
       proguardFile getDefaultDexGuardFile('dexguard-release-aggressive.pro') 
       proguardFile 'dexguard-project.pro' 
      } 
      debug { 
       //dontshrink, dontoptimize and dontobfuscate are turned off 
      } 
    } 

    productFlavors { 
      prod { 
       ... 
      } 
      qa { 
       ... 
      } 
      dev { 
       ... 
      } 
      mock { 
       ... 
      } 
    } 
    //added to filter dexguard for these flavors 
    variantFilter { variant -> 
     def names = variant.flavors*.name 

     if(names.contains("mock") && variant.buildType.name == "release") { 
      variant.ignore = true 
     } else if (names.contains("dev") && variant.buildType.name == 
         "release") { 
      variant.ignore = true 
     } 
    } 
}