2016-11-22 60 views
3

我尝试了很多解决方案 Remove all debug logging calls before publishing: are there tools to do this?从第三方lib/sdk中删除所有调试日志记录调用(Proguard不工作)

但是,当我看着logcat。日志仍然显示。从我的应用程序登录消失,但来自第三方的日志仍然存在。

这是我的proguard配置。

-dontwarn ** 
-target 1.7 
#-dontusemixedcaseclassnames 
#-dontskipnonpubliclibraryclasses 
#-dontpreverify 
-verbose 

-optimizations !code/simplification/arithmetic,!code/allocation/variable 
-keep class ** 
-keepclassmembers class *{*;} 
-keepattributes * 

-dontskipnonpubliclibraryclasses 
#-dontobfuscate 
-forceprocessing 
-optimizationpasses 5 

-keep class * extends android.app.Activity 
-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(...); 
} 

这是我gradle这个文件的配置

buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' 
      debuggable false 
      jniDebuggable false 
      signingConfig signingConfigs.config 
     } 
     debug { 
      proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' 
      minifyEnabled true 
      debuggable false 
      zipAlignEnabled true 
      jniDebuggable false 
     } 
    } 

客户要删除所有日志,甚至从第三方库或SDK日志中出于安全原因

+0

这就是外部日志记录工具在Github上的原因,您可以通过一个方法调用禁用登录。 Logcat不能被禁用。下载示例日志工具,重构消息以使用它,并在发布版本中禁用。 –

+0

客户希望从第三方库或SDK中删除所有日志,甚至是日志。 – UmAnusorn

+0

ctrl + shif + f>键入log.d>并删除该行。 –

回答

1

ProGuard的只会是能够删除应用程序代码中的日志记录调用,即正在处理并包含在您自己的应用程序中的代码。任何由Android运行时执行的日志记录调用都不能被删除,因为运行时安装在每个设备上,并且显然不能提前修改。

看着你的规则和gradle文件,设置看起来是正确的,也适用于我删除调用android.util.Log。确保您使用的是最新版本的ProGuard(例如5.2.1或更高版本)。您的release buildType中仍然有ProGuard禁用,您需要将minifyEnabled设置为true才能启用它。