2016-04-08 15 views
1

Ich möchte den Debugger in Android ausführen, aber mein Problem ist in Debug Build Ich habe proguard auf. Der Grund dafür ist das dumme 65K-Methodenlimit. Ich habe proguard eingeschaltet, um die Methoden zu reduzieren. Das bringt mich zurück zu 43K-Methoden, aber jetzt in der IDE kann ich nicht schrittweise durch Code debuggen, da alle Breakpoints in der IDE in rote X mit einem Fehler, der nicht erreichbaren Code sagt, umgewandelt werden. Wenn ich den Debugger schließe, wird der Breakpoint wieder normal. Gibt es etwas, das ich im Build-Gradle-Programm tun muss, um es zum Laufen zu bringen oder werde ich einfach abgespritzt?Run Debugger in Android Studio mit Proguard On

buildTypes { 
    debug { 
     debuggable true 
     minifyEnabled true 
     shrinkResources false 
     zipAlignEnabled true 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt' 
     signingConfig signingConfigs.debug 
    } 
    release { 
     minifyEnabled true 
     shrinkResources true 
     signingConfig signingConfigs.release 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-samsung.txt' 
    } 
} 
+0

haben Sie alle nicht verwendeten Bibliotheken? Was sind deine Abhängigkeiten? Können Sie einige Ihrer ungenutzten Teile Ihrer Bibliotheken entfernen? möchte dir helfen, deine Größe zu reduzieren! – ApolloSoftware

+0

Viele Sachen von Drittanbietern mit nutzlosem Zeug, wir haben so viel reduziert, wie wir jetzt konnten, wir sind gegen eine Wand. – JPM

+0

hatten wir das gleiche Problem. Unser Schuldiger, der die Methode über 65K schickte, war Google Play. Wir mussten tatsächlich eine ältere Version von Google Play Build verwenden (mit weniger Flaum) und es brachte uns unter die Schwelle. Möglicherweise müssen Sie Ihre APK in ein paar separate modulare Komponenten zerlegen. – ApolloSoftware

Antwort

2

Ihre ProGuard-Konfiguration vermisst wahrscheinlich einige Klauseln.

Ich denke, Sie müssen dies:

-keepattributes SourceFile,LineNumberTable 

Es halten Namen der Quelle (wie der Name schon sagt) Dateien und die Zeilennummer Tabelle. Eigentlich sollte diese Klausel auch für die Freigabe verwendet werden, da Sie Stacktraces nicht eindeutig ohne diese entschlüsseln können.

Und es ist gut, diese zusätzliche Klausel zu haben, für die Fehlersuche:

-keepattributes LocalVariableTable,LocalVariableTypeTable 

, dass die lokalen Variablennamen halten.

Alternativ können Sie diese Klauseln in Betracht ziehen (anstelle oder neben den bisherigen Klauseln) für Debug:

-dontoptimize 
-dontobfuscate 
Verwandte Themen