ProGuard 无法删除 Log.i 函数调用
ProGuard can't remove the Log.i function calls
我在我的 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 运行ning 的 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 日志?
我错过了哪一步?
您需要使用优化的混淆器配置,让混淆器优化您的代码。
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
使用proguard-android-optimize.txt
代替proguard-android.txt
我在我的 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 运行ning 的 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 日志?
我错过了哪一步?
您需要使用优化的混淆器配置,让混淆器优化您的代码。
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
使用proguard-android-optimize.txt
代替proguard-android.txt