proguard地狱 – 找不到引用类

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

当我尝试导出使用proguard时,我得到很多警告即“无法find引用类”

例如:

[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有关,所以在我的proguardconfiguration文件中,我添加了以下内容:

 -libraryjars pathtoprojecttolibs\simple-xml-2.4.jar 

其中pathtoprojecttolibs是我的项目引用的jar子的path。

这没有什么区别。

如果simpleframework引用javax,我可以告诉proguard忽略这个吗?

有任何想法吗?

你代码中的org.simpleframework.xml.stream.StreamReader指向javax.xml.stream.events.XMLEvent 。 后一类是Java运行时( rt.jar )的一部分,但不是Android运行时( android.jar )的一部分,所以ProGuard警告说可能会有事情发生。 如果您确定您的应用程序无论如何工作,您可以指定

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

ProGuard地狱?

就我而言,根本原因就在这里 。 那些警告你可以跳过:

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

原来的答案在这里

你应该在你的Proguardconfiguration中包含这个:

 -dontskipnonpubliclibraryclasses 

我的魔法键解决了我的search时间:添加到progruard-android.txt

 -dontskipnonpubliclibraryclassmembers 

嗯。 读取该警告,看起来您正在尝试使用的库对javax.xml.stream.events具有依赖性。 我不认为这个名字空间实际上包含在android中。 (见包装索引 )。

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

我认为这是一个边缘案例,但在我的情况下,我不得不完全擦拭我的Jenkins proguard上的生成文件夹试图与旧的代码工作,这是不存在的 – 以防万一任何人有同样的问题。