首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仅对某些产品风格禁用DexGuard

仅对某些产品风格禁用DexGuard
EN

Stack Overflow用户
提问于 2017-03-24 04:43:58
回答 1查看 977关注 0票数 1

我使用DexGuard,有4个产品版本(prod,qa,dev,mock)用于2个构建类型(发布和调试),我没有为调试版本启用DexGuard,因此我得到了4个变体(dexguardProdRelease...dexguardMockRelease),但是,我不想为开发和模拟版本启用DexGuard。

我了解了Gradle提供的variantFilter,但是我不知道如何在这个例子中使用与插件DexGuard相关的命令。

EN

回答 1

Stack Overflow用户

发布于 2017-04-11 02:05:36

我可以像这样解决:

代码语言:javascript
复制
//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
    }
}

现在,Gradle不再显示像dexguardMockReleasedexguardDevRelease这样的任务。

我通过过滤掉DexGuard来处理这个问题是不正确的,而我应该考虑删除某些味道。下面是我的build.gradle的相关部分

代码语言:javascript
复制
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
       }
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42986599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档