我在 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/