android - ProGuard 无法删除 Log.i 函数调用

标签 android android-studio proguard release logcat

我在我的 android 程序中经常使用 Log.i,我想在发布版本中将它们全部删除。

我的做法是这样的:

  1. 添加 proguard-rules.pro:

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

您可以看到 minifyEnabled 设置为 true 并且我看到 .apk 文件的大小从 1.9M 减少到 1.2M。

  1. 添加“proguard-rules.pro”

我添加了 'proguard-rules.pro' 作为:

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

我确定它被使用了,因为之前有很多 okio* 警告,然后在我添加 -dontwarn 之后警告消失了。

为确保日志消失,我在连接到运行 Android Studio 的 PC 的设备上运行该应用程序。它没有处于 Debug模式,但我只是使用它的 Android Monitor -> logcat 查看是否有任何日志输出。

奇怪的是我仍然看到我的应用程序的日志输出。喜欢

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

这是我的代码的结果

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

从日志的 ? 来看,我假设 ProGuard 有效(否则它应该是我的完整应用程序名称)。但为什么我仍然看到 logcat 日志? 我错过了哪一步?

最佳答案

使用 proguard-android-optimize.txt 代替 proguard-android.txt

关于android - ProGuard 无法删除 Log.i 函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40043151/

相关文章:

android - 当我启动 Android Emulator 时,我的 Mac 桌面上的音频停止

用于拆分 APK 的 Android ProGuard 多个映射文件?

android - 在 Maven 3 发布期间提交更新的 Proguard 映射

android - 区分位置不可用和位置不支持 Android

java - Android 3g 下载和多线程

Android:在 Android 2.2 上使用 webview 查看 IP Camera 的图像

Android Wifi 通过具有相同 SSID 的 AP 漫游

安卓错误 : failed to find target with hash string android-26 and similar

Android Studio 卡在 "Analyzing..."

android - 尽管使用 -keepclasseswithmembernames,Proguard 仍然混淆了类