【问题标题】:ProGuard can't remove the Log.i function callsProGuard 无法删除 Log.i 函数调用
【发布时间】:2016-10-14 12:27:28
【问题描述】:

我在我的 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 的设备上运行应用程序。它没有处于调试模式,但我只是使用它的 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 日志? 我错过了哪一步?

【问题讨论】:

    标签: android android-studio proguard release logcat


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      您需要使用优化的 proguard 配置,让 proguard 来优化您的代码。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-02-13
        • 2012-10-24
        • 1970-01-01
        • 1970-01-01
        • 2014-05-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多