2017-01-25 2 views
0

Я использую Proguard сжать мой отладки и тестирования APK APKProguard не гнушаясь тест 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' 
    } 

Когда я включаю Минимизировать и запустить интеграционные тесты, отладки метод подсчета 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

Вы когда-нибудь решали это? У меня такая же проблема, пытаясь уменьшить количество методов для проверки apk. – roko

+0

@roko no, это была проблема, которую я открыл: https://issuetracker.google.com/issues/37134017 – tir38

ответ

0

ProGuard работает только тогда, когда вы строите ваши приложение в режиме выпуска, поэтому вам не нужно иметь дело с обфускационным кодом при создании приложения в режиме отладки или в тестовом режиме. Построение в режиме отладки или теста не вызывает ProGuard, поскольку делает отладку более громоздкой. Check this link

+0

Это датированный ответ, как описано здесь http://stackoverflow.com/a/16559793/1650674. Кроме того, * фактическая * документация об этом прямо опровергает то, что вы говорите. «Имейте в виду, что сокращение кода замедляет время сборки, поэтому вам следует избегать использования его при сборке отладки, если это возможно». https://developer.android.com/studio/build/shrink-code.html Наконец, как я уже сказал в своем вопросе, Proguard отлично работает для debug apk, но не для теста apk. – tir38

Смежные вопросы