【问题标题】:Proguard Note for unknown class 'Object' with Android Studio and Gradle使用 Android Studio 和 Gradle 对未知类“对象”进行 Proguard 说明
【发布时间】:2013-12-06 18:12:05
【问题描述】:

我在 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 插件的良性问题?

【问题讨论】:

    标签: android gradle android-studio proguard


    【解决方案1】:

    感谢 Eric Lafortune 的建议!在我的 proguard.txt 中添加 -printconfiguration 表明问题出在 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 Note。

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

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

    【讨论】:

    • 我已经添加了规则,但它仍然在抱怨。我猜这是因为在我自己的规则之后,旧规则仍然挂在配置文件中。有没有办法解决这个问题?
    【解决方案2】:

    我不知道 Android SDK 中对 Object 的任何不合格引用,但您可以指定选项 -printconfiguration config.txt 来写出完整的配置并查找参考。可以是方法参数,也可以是返回值,很容易被忽略。

    【讨论】:

    • 我们在哪里/如何指定这个选项?作为什么命令的一部分?以及针对哪个txt文件???
    • 我尝试将-printconfiguration config.txt 添加到我的项目中的proguard 规则文件之一,但是在构建我的应用程序时,我收到此错误消息:Flag -printconfiguration config.txt is not supported by the built-in shrinker.
    • 你可以在你的 proguard-rules.pro 中使用 -printconfiguration 来查看 Build 中的日志
    猜你喜欢
    • 2021-08-05
    • 2015-03-15
    • 2021-09-07
    • 1970-01-01
    • 1970-01-01
    • 2012-04-06
    • 1970-01-01
    • 2013-09-20
    • 1970-01-01
    相关资源
    最近更新 更多