我在我的 android 程序中经常使用 Log.i,我想在发布版本中将它们全部删除。
我的做法是这样的:
- 添加 proguard-rules.pro:
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
您可以看到 minifyEnabled
设置为 true
并且我看到 .apk 文件的大小从 1.9M 减少到 1.2M。
- 添加“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/