2016-10-14 2 views
1

J'utilise beaucoup Log.i dans mon programme android et je veux les supprimer tous dans la version release.ProGuard ne peut pas supprimer les appels de la fonction Log.i

Ce que je l'ai fait sont comme ceux-ci:

  1. Ajouter proguard-rules.pro:

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

Vous pouvez voir minifyEnabled est réglé sur true et je voir le fichier .apk taille est réduite de 1.9M à 1.2M.

    Ajouter
  1. 'proguard-rules.pro'

J'ai ajouté « ProGuard-rules.pro'as:

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

Je suis sûr qu'il est utilisé parce qu'il y avait beaucoup d'avertissement d'avertissements okio * avant que les avertissements soient partis après avoir ajouté -dontwarn. Pour vérifier que les journaux sont partis, je lance l'application sur un périphérique connecté à un ordinateur avec Android Studio en cours d'exécution. Ce n'est pas en mode débogage, mais j'utilise simplement son moniteur Android -> logcat pour voir s'il y a une sortie de journal. La chose étrange est que je vois toujours la sortie du journal de mon application. comme

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

Quel est le résultat de mon code de

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

De l'? du journal, je suppose ProGuard travaillé (sinon il devrait être mon nom complet de l'application). Mais pourquoi je vois toujours les logs de logcat? À quelle étape ai-je manqué?

Répondre

1

utilisation proguard-android-optimize.txt au lieu de proguard-android.txt

1

Vous devez utiliser la configuration proguard optimisée qui permet d'optimiser votre code.

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