proguard hell - 找不到引用的类

问题描述 投票:118回答:9

所以,我正在尝试发布一些软件,但Proguard让我头疼。

当我尝试使用proguard导出时,我收到很多警告,即“找不到引用的类”

例如:

[2011-08-07 17:44:37 - GAME] Warning: org.simpleframework.xml.stream.StreamReader: can't find referenced class javax.xml.stream.events.XMLEvent
[2011-08-07 17:44:37 - GAME] Warning: there were 52 unresolved references to classes or interfaces.
[2011-08-07 17:44:37 - GAME]          You may need to specify additional library jars (using '-libraryjars'),
[2011-08-07 17:44:37 - GAME]          or perhaps the '-dontskipnonpubliclibraryclasses' option.
[2011-08-07 17:44:37 - GAME] java.io.IOException: Please correct the above warnings first.
[ 

警告似乎与simpleframework有关,所以在我的proguard配置文件中我添加了以下内容:

-libraryjars pathtoprojecttolibs\simple-xml-2.4.jar

其中pathtoprojecttolibs是我项目引用的罐子之路。

这没什么区别。

如果simpleframework引用javax我可以告诉proguard也忽略它吗?

有任何想法吗?

android proguard
9个回答
125
投票

你的代码中的org.simpleframework.xml.stream.StreamReader指的是javax.xml.stream.events.XMLEvent。后一类是Java运行时(rt.jar)的一部分,但不是Android运行时(android.jar)的一部分,因此ProGuard警告某些内容可能会被破坏。如果您确定您的应用程序仍然有效,您可以指定

-dontwarn javax.xml.stream.events.**

ProGuard地狱?


8
投票

在我的情况下,根本原因是here。您可以跳过的警告:

-dontwarn org.simpleframework.xml.stream.**

original answer is here


5
投票

发生此错误是因为您使用的库依赖于其他未经常使用的库,但Proguard正在寻找它们。 将-dontwarn行添加到Android项目中的proguard-rules.pro文件中以禁用此警告。

enter image description here

您可以在错误的堆栈跟踪中找到需要添加到proguard-rules.pro的依赖项。


2
投票

你应该在你的Proguard配置中包含这个:

-dontskipnonpubliclibraryclasses

2
投票

My Magic键解决了我的搜索时间:将其添加到proguard-android.txt

-dontskipnonpubliclibraryclassmembers

0
投票

嗯。阅读该警告,您尝试使用的库似乎依赖于javax.xml.stream.events。我认为该命名空间实际上并不包含在android中。 (见Package Index)。

尝试将其部署到模拟器而不使用proguard,看看它是否有效。如果警告是准确的,我的猜测是否定的。


0
投票

我认为这是一个边缘案例,但在我的情况下,我必须彻底擦除我的Jenkins proguard上的构建文件夹,试图使用旧代码,而不再存在 - 以防万一有任何人有同样的问题。


0
投票

在我的情况下,我没有改变任何东西,警告开始显示。问题出在gradle缓存中。检查我的其他answer。我与此分享,因为我花了2个小时才发现问题:]


0
投票

将此行添加到gradle scripts目录中的proguard-rules.pro文件中:

-dontwarn package.class.name.**

其中package.class.name是包名,附加了jar文件的类名。

例如:

-dontwarn com.myexternalclass.utils.**
© www.soinside.com 2019 - 2024. All rights reserved.