Proguard 关于重复类定义的警告,但不打印出重复的类

Posted

技术标签:

【中文标题】Proguard 关于重复类定义的警告,但不打印出重复的类【英文标题】:Proguard warnings about duplicate class definitions, but doesn't print out the duplicate classes 【发布时间】:2018-04-20 02:21:54 【问题描述】:

我正在尝试更改我的应用程序中的库版本,但我认为我正在与我正在使用的另一个库尝试使用的某个依赖项的另一个版本发生某种冲突。它警告我有关重复的类定义,但随后仅打印出下一个警告类别的特定示例(在本例中为未解析的类定义)。

...
:RedactedApp:proguardDebug
Note: there were 644 duplicate class definitions (http://proguard.sourceforge.net/manual/troubleshooting.html#duplicateclass)
Warning: redacted.package.ClassName: can't find superclass or interface other.redacted.package.ClassName2
...
...
Warning: there were 12 unresolved references to classes or interfaces.
     You may need to add missing library jars or update their versions.
     If your code works fine without the missing classes, you can suppress
     the warnings with '-dontwarn' options.
     (http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedclass)
Warning: there were 5 unresolved references to library class members.
     You probably need to update the library versions.
     (http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedlibraryclassmember)

有没有办法强制 proguard 实际打印出检测到的重复类的名称?我已经在我的 proguard 文件中启用了 -verbose。

【问题讨论】:

【参考方案1】:

虽然我找不到让 proguard 实际打印出重复类的方法,但我能够通过 gradle (2.9) 命令很好地了解依赖关系:

gradle -q dependencies :RedactedAppName:dependencies --configuration compile

这给了我一个很好的图形视图,我有很多多余的导入。

【讨论】:

以上是关于Proguard 关于重复类定义的警告,但不打印出重复的类的主要内容,如果未能解决你的问题,请参考以下文章

解决 ProGuard 中的“库类的重复定义”

Proguard 警告“无法写入资源 [META-INF/MANIFEST.MF](重复的 zip 条目)”

android应用程序中的proguard

ProGuard 警告:对程序类成员有 7 个未解决的引用

关于 Square 的 Okio 库参考的 Android-Studio-1.2.RC Proguard 警告

Proguard 问题“警告:忽略匿名内部类的 InnerClasses 属性”