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上的生成文件夹试图与旧的代码工作,这是不存在的 – 以防万一任何人有同样的问题。