Как настроить proguard для ТОЛЬКО удаления вызовов регистрации в Android
Я пытаюсь настроить proguard для ТОЛЬКО удаления вызовов на android.util.Log из моего приложения для Android (для сборки выпуска). Я специально не хочу, чтобы proguard делал какие-либо обфускации или минимизации кода.
Это конфигурация, которую я пробовал, но она не удаляет вызовы Log
(я полагаю, из-за -keep class **
)
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,*Annotation*,EnclosingMethod
-keep class ** {
*;
}
-assumenosideeffects class android.util.Log {
*;
}
Я спрашиваю, возможно ли это с помощью proguard?
Ответы
Ответ 1
Вы можете удалить записи с этой опцией в proguard-project.txt
:
-assumenosideeffects class android.util.Log {
public static boolean isLoggable(java.lang.String, int);
public static int v(...);
public static int i(...);
public static int w(...);
public static int d(...);
public static int e(...);
}
Эта опция применима только в том случае, если оптимизация не отключена, например, в proguard-android.txt
. Вы должны указать proguard-android-optimize.txt
вместо этого в project.properties
:
proguard.config=${sdk.dir}/tools/proguard/proguard-android-optimize.txt:proguard-project.txt
Вы можете отключить сжатие и обфускацию, если хотите. Вы также можете сохранить внутренний API своего приложения из оптимизации, если хотите:
-keep class myapp.** { *; }
Отключение этих шагов и сохранение всего кода, конечно, не оптимальны с точки зрения ProGuard.
Ответ 2
В build.gradle
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
В proguard-rules.pro
-dontwarn **
-target 1.7
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!code/allocation/variable
-keep class **
-keepclassmembers class *{*;}
-keepattributes *
#This will not remove error log
-assumenosideeffects class android.util.Log {
public static boolean isLoggable(java.lang.String, int);
public static int v(...);
public static int i(...);
public static int w(...);
public static int d(...);
#public static int e(...);
}