2017-01-25 4 views
0

schrumpf ich Proguard bin mit meinem Debug apk und Test apkProguard nicht Test 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' 
    } 

Wenn ich minify ermöglichen schrumpfen und Integrationstests, die Debug-apk Methode Zahl reduziert, aber nicht den Test apk laufen.

Ich weiß, dass Proguard macht etwas, denn wenn ich nicht die richtigen Regeln in proguard-test-rules.pro habe, sehe ich Warnungen und die Test-APK wird nicht kompilieren.

Was passiert also? Warum schrumpft mein Test nicht? Gerade als Referenz, hier sind meine .pro-Dateien:

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

Haben Sie das jemals gelöst? Ich habe dasselbe Problem versucht, die Anzahl der Methoden für Test-APK zu reduzieren. – roko

+0

@roko Nein, das war das Problem, das ich öffnete: https://issuetracker.google.com/issues/37134017 – tir38

Antwort

0

ProGuard nur ausgeführt, wenn Sie bauen Ihre Anwendung im Freigabemodus, so dass Sie sich beim Erstellen Ihrer Anwendung im Debug-Modus oder im Test-Modus nicht mit verschleiertem Code beschäftigen müssen. Das Erstellen im Debug-Modus oder Test ruft ProGuard nicht auf, weil es das Debugging mühsamer macht. Check this link

+0

Das ist eine veraltete Antwort, wie hier erklärt http://Stackoverflow.com/a/16559793/1650674. Außerdem widerlegt die * tatsächliche * Dokumentation direkt das, was Sie sagen. "Seien Sie sich bewusst, dass Code-Verkleinerung die Build-Zeit verlangsamt, daher sollten Sie es möglichst nicht auf Ihrem Debug-Build verwenden." https://developer.android.com/studio/build/shrink-code.html Schließlich, wie ich in meiner Frage gesagt habe, funktioniert Proguard gut für die Debug-apk, aber nicht die Test-apk. – tir38

Verwandte Themen