Как настроить proguard для ТОЛЬКО удаления вызовов регистрации в Android - программирование

Как настроить 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?

4b9b3361

Ответ 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(...);
}