android - Android Studio 和 Gradle 未知类 'Object' 的 Proguard 说明

标签 android gradle android-studio proguard

我在 Android Studio 中创建了一个新项目,并正在使用 Gradle 构建它。

我已经为发布构建添加了 Proguard 集成,每次运行 assembleRelease 步骤时,我都会看到这个注释:

Note: the configuration refers to the unknown class 'Object'
      Maybe you meant the fully qualified name 'java.lang.Object'?

我的 Proguard 配置文件或 Android SDK 文件夹中的配置文件均未包含非限定名称 Object

我的 build.gradle 包括:

buildTypes {
    release {
        runProguard true
        proguardFile 'proguard-project.txt'
        proguardFile getDefaultProguardFile('proguard-android-optimize.txt')

        signingConfig signingConfigs.release
    }
}

当我删除上面的 proguardFile 行时,以及如果我删除我的自定义 Proguard 规则(每次在重建前进行清理)时,我什至会看到相同的注释。

我猜这是 Gradle 的 Proguard 插件的良性问题?

最佳答案

感谢 Eric Lafortune 的建议!将 -printconfiguration 添加到我的 proguard.txt 显示问题出在 google-play-services_lib (r13)。

有罪的 Proguard 规则是(它应该是 java.lang.Object[][]):

-keep class * extends java.util.ListResourceBundle {
    protected Object[][] getContents();
}

您可以在 Mac 上通过右键单击 Android Studio 来查看此内容,执行 Show Package Contents,然后浏览到 sdk/extras/google/google_play_services/libproject/google-play-services_lib/proguard.txt.

最快的解决方法是将正确的 Proguard 规则添加到您自己的 Proguard 配置中,然后忽略 Proguard 注释。

-keep class * extends java.util.ListResourceBundle {
    protected java.lang.Object[][] getContents();
}

我向 Google 提出了这个错误 Android Issue #63095 .

关于android - Android Studio 和 Gradle 未知类 'Object' 的 Proguard 说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20135121/

相关文章:

Android SDK (Nexus 5X API28 x86) 在准备设置时停止

android - Flutter 在新位置包上运行会抛出错误

java - Android Studio 中 fragment Activity 中的谷歌地图

java - 打开新部分时如何打开并自动关闭警报对话框?

android - Action Bar Style导致Action Bar消失

java - 如果我没有使用 .equals 方法,我怎么会收到这个错误?

android - Volley 的 NetworkImageView - setImageBitmap 方法不起作用

gradle - 如何在插件列表的特定插件之后添加我自己的插件任务来执行?

grails - 通过 Gradle 构建一个新的 Grails 应用程序

android - “为平板电脑设计应用”优化技巧