我正在使用Proguard收缩我的调试apk并测试apk
buildTypes {
debug {
applicationIdSuffix ".debug"
debuggable true
signingConfig signingConfigs.debug
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
testProguardFile 'proguard-test-rules.pro'
}
当我启用minify并运行集成测试时,调试apk方法计数会减少,但不会测试apk。
我知道Proguard正在做某事,因为如果我在proguard-test-rules.pro
中没有正确的规则,我会看到警告,而测试apk将无法编译。
那发生了什么事?为什么我的测试apk没有缩小?仅供参考,这是我的.pro文件:
proguard-rules.pro:
# general
-dontobfuscate
# for Retrofit2
-dontwarn retrofit2.**
-keep class retrofit2.** { *; }
-keepattributes Signature
-keepattributes Exceptions
# for RetroLambda
-dontwarn java.lang.invoke.*
# for Saripaar
-keep class com.mobsandgeeks.saripaar.** {*;}
-keep @com.mobsandgeeks.saripaar.annotation.ValidateUsing class * {*;}
# for OKIO
-dontwarn okio.**
# for RxJava
-dontwarn sun.misc.Unsafe
# for android.content.res classes
-dontwarn org.xmlpull.v1.**
# for Butterknife
-dontwarn rx.functions.Func1
proguard-test-rules.pro
-include proguard-rules.pro
-dontobfuscate
-dontwarn
-dontwarn org.hamcrest.**
-dontwarn android.test.**
-dontwarn android.support.test.**
-keep class android.support.test.** { *; }
-keep class junit.runner.** { *; }
-keep class junit.framework.** { *; }
-keep class org.jmock.core.** { *; }
-keep class org.easymock.** { *; }
-dontwarn com.fasterxml.jackson.databind.**
-dontwarn com.fasterxml.jackson.core.**
-dontwarn com.fasterxml.jackson.annotation.**
-dontwarn org.ietf.jgss.**
-dontwarn javax.xml.**
-dontwarn javax.swing.**
-dontwarn javax.lang.**
-dontwarn java.nio.**
-dontwarn java.lang.**
-dontwarn org.w3c.dom.traversal.**
-dontwarn org.eclipse.jetty.**
-dontwarn java.beans.**
-dontwarn org.slf4j.**
-dontwarn org.apache.http.**
答案 0 :(得分:0)
ProGuard仅在您以发布模式构建应用程序时运行,因此您无需在调试模式或测试模式下构建应用程序时处理混淆代码。以调试模式构建或test不会调用ProGuard,因为它使调试更加繁琐。 Check this link