los*_*ion 2 android proguard android-r8
我正在尝试使用 R8 和 proguard 从发布版本中删除日志记录。问题是我目前需要这是微创的,所以我想启用 R8/proguard 来删除日志,但关闭其他所有内容。IE缩小、混淆等
构建.gradle:
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
Run Code Online (Sandbox Code Playgroud)
proguard-rules.pro:
-dontobfuscate
-dontoptimize
-dontshrink
-assumenosideeffects class android.util.Log {
public static boolean isLoggable(java.lang.String, int);
public static int v(...);
public static int w(...);
public static int e(...);
public static int d(...);
public static int i(...);
}
Run Code Online (Sandbox Code Playgroud)
但是,在构建和部署发布版本时,日志不会被删除。我想这是因为假设没有副作用作为我关闭的选项之一的一部分运行。
我也尝试过这个:
-keep class ** { *; }
-assumenosideeffects class android.util.Log {
public static boolean isLoggable(java.lang.String, int);
public static int v(...);
public static int w(...);
public static int e(...);
public static int d(...);
public static int i(...);
}
Run Code Online (Sandbox Code Playgroud)
然而,这还剩下日志记录。
在不移动到不同的日志库或修改代码的情况下,是否可以使用 R8/proguard 删除日志记录而不运行其他任何内容?
编辑:
我努力弄清楚为什么 proguard/r8 没有删除日志,我创建了一个全新的项目。我使用以下配置添加了一行日志记录:
release {
debuggable true
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
Run Code Online (Sandbox Code Playgroud)
但是,当我构建发行版本并安装 APK 时,我仍然看到日志记录,这意味着我的日志语句没有被删除。
编辑:
debuggable true
Run Code Online (Sandbox Code Playgroud)
跳过 r8 优化。所以这不是验证日志是否已被混淆器删除的好方法。使用 dex to jar 应用程序进行验证是正确的方法。dex2jar 对我有用。
小智 5
请从发布块中删除可调试的 true 行,这就是您在 build.gradle 中看到日志的原因。
| 归档时间: |
|
| 查看次数: |
2338 次 |
| 最近记录: |