Proguard没有缩小测试APK

时间:2017-01-25 19:11:56

标签: android testing proguard android-proguard

我正在使用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.**

1 个答案:

答案 0 :(得分:0)

ProGuard仅在您以发布模式构建应用程序时运行,因此您无需在调试模式或测试模式下构建应用程序时处理混淆代码。以调试模式构建或test不会调用ProGuard,因为它使调试更加繁琐。 Check this link