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

Posted

技术标签:

【中文标题】ProGuard 警告:对程序类成员有 7 个未解决的引用【英文标题】:ProGuard warnings: there were 7 unresolved references to program class members 【发布时间】:2015-03-12 04:06:44 【问题描述】:

ProGuard 停止并出现大量警告:

警告:有 1221 个未解析的类引用或 接口。 您可能需要添加缺少的库 jar 或更新它们的版本。 如果您的代码在没有丢失类的情况下工作正常,您可以抑制 带有“-dontwarn”选项的警告。 (http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedclass)

警告:有 37 个库类实例,具体取决于 节目课。 你必须避免这种依赖,因为程序类会 被处理,而库类将保持不变。 (http://proguard.sourceforge.net/manual/troubleshooting.html#dependency) 警告:有 7 个未解决的引用 程序类成员。 您的输入类似乎不一致。 您可能需要重新编译代码。 (http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedprogramclassmember)

错误:请先更正上述警告。

但是我的 jar 运行正常。我对proguard设置不太熟悉。有什么建议吗?

【问题讨论】:

【参考方案1】:

我将引用你问题的一个非常相关的部分(即答案)。

如果您的代码工作正常没有缺少的类,您可以使用“-dontwarn”选项抑制警告

所以,使用-dontwarn 运行它,因为我的 jar 运行正常。

已记录(根据您的问题)here,如果您有要添加的外部库,也可以使用选项 -libraryjars

【讨论】:

【参考方案2】:

这里最好的做法是在 progyard 配置文件中添加库。在它的顶部,就在输入和输出 jar 路径之后,放置类似这样的行,一个用于您使用的每个库 jar:

-libraryjars 'path/to/jar/file.jar'

这告诉 proguard 从指定的 jar 中加载缺少的类。

【讨论】:

【参考方案3】:

上面有类似警告

Warning: class A: can't find referenced class B

您可以使用-keep class com.package.** *; 来防止其被混淆,或者如果您确定这不是问题,您可以使用-dontwarn com.package.**

【讨论】:

以上是关于ProGuard 警告:对程序类成员有 7 个未解决的引用的主要内容,如果未能解决你的问题,请参考以下文章

Proguard和mixpanel问题

Proguard:有 210 个重复的类定义?

收到太多 Proguard 警告

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

尽管阅读了常见问题解答,ProGuard 仍因“警告:类 [*] 意外包含类 [*]”而失败

Proguard 不会保留班级成员的枚举