android - 当 android 中 minifyenabled 为 true 时,如何在发布 apk 后关闭 log cat 输出

标签 android android-studio proguard logcat

首先,请不要将其视为重复的问题,因为我已经尝试了此论坛中的所有解决方案,但未能得到答案。

从我制作的 gradle.build 文件中:

minifyenabled 为 true,然后在我的项目的 proguard-rules.pro 文件中写入这行代码:

-assumenosideeffects class android.util.Log {
    public static *** d(...);
    public static *** e(...);
    public static *** i(...);
    public static *** w(...);
    public static *** v(...);
}

但这并没有改变我的项目中的任何内容,当我制作发行版 apk 并在我的设备上运行时,所有日志仍然显示!我现在有什么新的事情要做吗?

最佳答案

当设置 -dontoptimize ( relevant documentation ) 时,会跳过

-assumenosideeffects ,我相信这是 Android 提供的标准 ProGuard 配置文件的默认设置。

如果您想使用-assumenosideeffects,那么您必须使用{your-中的proguard-android-optimize.txt配置文件sdk-dir}/tools/proguard/ 目录。这也将应用于您在应用程序项目中使用的任何库,因此如果您担心的话,它们的日志记录也将被删除。

作为替代方案,您可以使用 Android 的 Log 的包装类,将所有调用包装在检查 BuildConfig.DEBUG 标志的条件中,这更好,因为您将有一个这些检查的单一访问点,而不是将它们散布在您的类(class)中。

但值得注意的是,对于后一种解决方案,您不会获得发布版本的性能改进,就好像您有大量日志记录,在其中连接消息字符串时,这些仍将在运行时针对方法调用进行评估(即使它们永远不会被打印出来)。

关于android - 当 android 中 minifyenabled 为 true 时,如何在发布 apk 后关闭 log cat 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31088772/

相关文章:

java - 如果列表中尚不存在,则将项目添加到 arraylist

android - 返回到 Android 中的视频播放 Activity 时出现黑屏

Android Studio - 该应用程序无法启动,因为无法初始化 Qt 平台插件

android - 如何在 Android Studio 中创建使用 Google Maps Api v2 的 Android 应用程序?

android - 无法撤消 Gradle 中排除模块的影响

android - Proguard 不允许我导出 apk

java - 如何使图像按钮在 Java/Android Studio 中单击时更改图像并在 ClickOut 时返回到其原始状态

ProGuard 上的 android.support.v8.renderscript 错误

android - 在 adt&sdk 20 上使用混淆器时导出 Android 项目

AndroidX 首选项屏幕偏离中心