前卫地狱-找不到引用类

所以,我 正在努力发布了一些软件,但是 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是我的项目引用的 jar 的路径。

这没什么区别。

如果 simpleFramework 引用了 javax,我可以告诉 proGuard 忽略这个吗?

有什么想法吗?

76724 次浏览

嗯。如果读取这个警告,就会发现您试图使用的库似乎依赖于 javax.xml.stream. events。我认为 android 根本不包含名称空间。(见 包裹索引)。

尝试将其部署到模拟器,而不使用 proGuard,看看它是否有效。如果这个警告准确的话,我猜不会。

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

-dontskipnonpubliclibraryclasses

代码中的 org.simpleframework.xml.stream.StreamReader指的是 javax.xml.stream.events.XMLEvent。后一个类是 Java 运行时(rt.jar)的一部分,但不是 Android 运行时(android.jar)的一部分,因此 ProGuard 警告可能出现故障。如果确定应用程序能够正常工作,可以指定

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

职业卫士的地狱?

我的魔法钥匙,解决了我的搜索时间: 添加到 progrard-android. txt

-dontskipnonpubliclibraryclassmembers

在我的案例中,根本原因是 给你。这些警告你可以直接跳过:

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

原始答案在这里

我认为这是一个边缘情况,但在我的情况下,我必须完全擦除构建文件夹在我的 Jenkins 前卫试图与旧代码工作,这是不存在任何更多的-只是为了以防任何人有同样的问题。

在我的情况下,我没有改变任何东西,警告开始显示。问题在于级别缓存被破坏了。检查另一个 回答。我分享这个是因为我花了两个小时才找到问题所在: ]

发生此错误是因为您使用的库依赖于其他并未真正使用的库,但 ProGuard 正在寻找这些库。
不用担心行添加到 Android 项目中的 Proguard-rules.pro文件中,以禁用此警告。

enter image description here

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

将这一行添加到 gradle 脚本目录中的 proguard-rules.pro文件:

-dontwarn package.class.name.**

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

例如:

-dontwarn com.myexternalclass.utils.**