我怎样才能以不同的风格或不同的构建类型使用不同的proguard文件? [英] How can I use different proguard files in different flavors or for different build types?

查看:161
本文介绍了我怎样才能以不同的风格或不同的构建类型使用不同的proguard文件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要为测试库做出不同的口味。为什么?嗯,我希望项目得到充分的保护,所以我希望能够一直保持启用状态(即使是调试构建类型)。



在进行测试时,我使用的是不同的来自项目的类,
,所以我决定用flavor改变proguard文件。它看起来像这样:

  android {
...
buildTypes {
release {
minifyEnabled true
testProguardFile'test-proguard-rules.pro'
}
debug {
minifyEnabled true
testProguardFile'test-proguard-rules。 pro'
}
}
...
productFlavors {
forTest {
proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard- ('proguard-android.txt'),'proguard-rules.pro','debug- rules.pro'
}
}
}

和proguard -rules * files



proguard-rules:

  -dontwarn blablabla 。** 
-dontwarn blabla。**
-keep class bla。** {*; }

proguard-rules1:

  -dontshrink 
--dontobfuscate
- dontwarn

但这对我没有帮助。我想运行测试而不模糊处理。 Flavors没有minifyEnabled这样的参数,所以我试图找到任何解决方案。那么关于解决问题的任何建议?可能有人遇到同样的问题,并找到另一种解决方案(不使用口味)?

解决方案

发现了以下工作:

  buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro'
}
}

productFlavors {
flavorA {
applicationIdSuffix.a
proguardFile'flavorA_rules.pro'
}
flavorB {
applicationIdSuffix.b
}

}


I need to make different flavors for test libraries. Why? Well, I want project to be fully secured so I wanna minifying to be enabled all the time(even for debug build type).

While making tests I'm using different classes from project, so I decided to change proguard files using flavor. It looks like something this :

android {
    ...
    buildTypes {
        release {
            minifyEnabled true
            testProguardFile 'test-proguard-rules.pro'
        }
        debug {
            minifyEnabled true
            testProguardFile 'test-proguard-rules.pro'
        }
    }
    ...
    productFlavors{
        forTest{
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules1.pro', 'debug-rules.pro'
        }
        forRelease{
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro', 'debug-rules.pro'
        }
   }
}

And proguard-rules* files

proguard-rules:

-dontwarn blablabla.**
-dontwarn blabla.**
-keep class bla.** { *; }

proguard-rules1:

-dontshrink
-dontobfuscate
-dontwarn

But this wasn't helpful for me. I want to run tests without obfuscation. Flavors doesn't have such param as minifyEnabled so I try to find any solution. So any suggestions about resolving an issue? May be someone had the same problem and find another solution (not using flavors) ?

解决方案

After a whole day messing with this I found the following works:

buildTypes {
    release {
        minifyEnabled true
        shrinkResources true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

productFlavors {
    flavorA {
        applicationIdSuffix ".a"
        proguardFile 'flavorA_rules.pro'
    }
    flavorB {
        applicationIdSuffix ".b"
    }

}

这篇关于我怎样才能以不同的风格或不同的构建类型使用不同的proguard文件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆