2016-10-14 22 views
1

Ich benutze Log.i viel in meinem Android-Programm und ich möchte sie alle in Release-Build entfernen.ProGuard kann die Log.i Funktionsaufrufe nicht entfernen

Was ich getan habe, sind wie diese:

  1. hinzufügen proguard-rules.pro:

buildTypes { 
 
     release { 
 
      minifyEnabled true 
 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
 
     } 
 
    }

können Sie sehen minifyEnabled auf true gesetzt und ich Die Größe der .apk-Datei wird von 1,9 Millionen auf 1,2 Millionen reduziert.

  1. Add 'proguard-rules.pro'

Ich habe ‚proguard-rules.pro'as:

-assumenosideeffects class android.util.Log { 
 
     public static int v(...); 
 
     public static int i(...); 
 
    } 
 
-dontwarn okio.**

Ich bin mir sicher, dass es verwendet wird, weil es viele Warnungen vor okio * Warnungen gab, bevor die Warnungen verschwunden sind, nachdem ich -dontwarn hinzugefügt habe.

Um sicherzustellen, dass die Protokolle nicht mehr vorhanden sind, starte ich die App auf einem Gerät, das mit einem PC mit Android Studio verbunden ist. Es ist nicht im Debug-Modus, aber ich benutze nur Android Monitor -> logcat, um zu sehen, ob es eine Log-Ausgabe gibt.

Das Seltsame ist, dass ich noch Log-Ausgabe von meiner App sehe. wie

10-14 18:53:01.436 3173-3173/? I/b: send: 03 ed 00 02 55 

Welches ist das Ergebnis meines Code von

Log.i(TAG, "send: "+ toHex(req)); 

Vom ? des Stamm ist, gehe ich davon aus ProGuard gearbeitet (sonst soll es mein voller App-Name sein). Aber warum sehe ich immer noch die Logcat Logs? Welchen Schritt habe ich verpasst?

Antwort

1

Verwendung proguard-android-optimize.txt statt proguard-android.txt

1

Sie müssen die optimierte proguard config verwenden, mit der der proguard Ihren Code optimieren kann.

proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' 
Verwandte Themen