android - 仅使用 Proguard 来禁用日志记录和缩减资源

标签 android android-gradle-plugin proguard android-proguard

build.gradle:

buildTypes {
        release {
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.SginConfig
        }
}

我不希望 Proguard 优化或混淆我的代码,因为它给我带来了很多麻烦。我只想删除日志调用并启用未使用资源的缩减。

proguard-rules.pro:

-assumenosideeffects class android.util.Log {
    public static boolean isLoggable(java.lang.String, int);
    public static int w(...);
    public static int d(...);
    public static int e(...);
}

只有当我将 getDefaultProguardFile 从 ('proguard-android.txt') 设置为 ('proguard -android-optimize.txt')

但是通过将其设置为 proguard-android-optimize.txt 将启用我不想要的优化标志。

那么,如果 Proguard 不对我的代码进行任何缩小或优化,我该如何禁用日志记录和缩减资源呢?

最佳答案

您应该能够通过仅启用 assumenosideeffects 所依赖的特定 Proguard 优化来做到这一点。它依赖的两个是:

  • code/removal/simple:根据简单的控制流分析删除死代码。
  • code/removal/advanced:根据控制流分析和数据流分析删除死代码。

您可以阅读更多关于不同优化选项的信息 here .所以这样的事情应该有效:

proguard-rules.pro

-optimizations code/removal/simple,code/removal/advanced
-dontobfuscate
-assumenosideeffects class android.util.Log {
    public static boolean isLoggable(java.lang.String, int);
    public static int w(...);
    public static int d(...);
    public static int e(...);
}

build.gradle

buildTypes {
        release {
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.SginConfig
        }
}

关于android - 仅使用 Proguard 来禁用日志记录和缩减资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34450215/

相关文章:

android - Android 上的 Proguard 坏了吗?

java - 将模型类加载到 Kotlin 类

android - 在设备上安装应用程序时出错

android - 如何修复 "unexpected element <queries> found in <manifest>"错误?

android - Proguard 与 Ormlite "no such column"

optimization - 使用 Proguard 和优化的 Android 配置文件删除日志记录

Android 2.2.1 文本框背景图片

android - 如何使 View 对点击使用react

Android Studio 构建风格 - 如何在不同风格中拥有相同的源文件

android-studio - 最好将 IntelliJ 项目转换为 Gradle 还是使用 Android Studio 导入项目?