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

时间:2016-10-14 12:27:29

标签: android android-studio proguard release logcat

我在我的android程序中使用了很多Log.i,我想在发布版本中删除它们。

我所做的就像这些:

  1. 添加proguard-rules.pro:
  2. 
    
    buildTypes {
            release {
                minifyEnabled true
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
    
    
    

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

    1. 添加' proguard-rules.pro'
    2. 我添加了' proguard-rules.pro' as:

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

      我确定它已被使用,因为在我添加-dontwarn之后警告已经消失之前,有许多警告显示okio *警告。

      为了确保日志消失,我在连接到运行Android Studio的PC的设备上运行应用程序。它不处于调试模式,但我只使用其Android监视器 - > 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日志? 我错过了哪一步?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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