android - proguard-rules.pro 似乎不适用于 R8

标签 android android-proguard android-r8

我今天早些时候将我的 Android Studio 升级到 3.4,我第一次使用默认的 shrinker R8。我将一个库项目的proguard-project.txt的内容复制到它的proguard-rules.pro中。 proguard-project.txt 为这个项目完美地工作,生成一个供其他应用项目使用的 aar 文件。

文件 proguard-rules.pro 似乎没有被使用。该项目在其 build.gradle 中包含以下内容:

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

proguard-rules.pro 具有以下内容:

# Preserve all public classes, and their public and protected fields and methods.
-keep public class * {
    public protected *;
}

公共(public)方法的名称根本没有保留: enter image description here

有人可以提供有关如何解决此问题的提示吗?

最佳答案

将此行添加到 gradle.properties

android.enableR8 = true

然后在您的 proguard-rules.pro

中尝试以下代码
-keep public class ** {
    public *;
    protected *;

}

编辑#1

在此处查看如何将 Proguard 迁移到 R8:Android/java: Transition / Migration from ProGuard to R8?

关于android - proguard-rules.pro 似乎不适用于 R8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55803562/

相关文章:

java - Android - 发送大量请求的正确方法

android - 如何为 ButterKnife 8 配置 ProGuard 设置?

android - 在proguard Android中保留 Assets 文件夹

android - 如何从 firebase 导出无崩溃用户?

android - 使用 SimpleAdapter 在 Android ListView 上添加 onClick 监听器

java - 带有 OnTouch 事件的 ScrollView

android - 错误 :Execution failed for task ':app:transformClassesAndResourcesWithProguardForRelease' while generating APK

java - ProGuard - 应用程序在模拟器中运行良好,但在尝试构建 apk 时失败

android - 为什么 minifyEnabled 在默认情况下在发布版本中为 false?

android - 如何在 Android R8 中只关闭混淆?