我怎样才能以不同的风格或不同的构建类型使用不同的proguard文件? [英] How can I use different proguard files in different flavors or for different build types?
问题描述
在进行测试时,我使用的是不同的来自项目的类,
,所以我决定用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屋!