使用带有 minifyEnabled 的 SimpleXML 的应用程序不起作用

App using SimpleXML with minifyEnabled does not work

我有一个应用程序在调试时工作正常,但是当我制作发布版本时,在 build.gradle 文件中使用 minifyEnabled true,它似乎不再工作了:

D/SapphirePocket( 6520): Could not serialize telegram: <init> [interface a.a.a.b.am, interface a.a.a.a, class a.a.a.e.n]

SimpleXML 是否可以与缩小的 APK 一起使用,检查可能不再完全有效,或者这应该可以吗?

当您激活 minifyEnabled 时,您将使用混淆器混淆代码。 SimpleXML 应该使用一些你正在混淆的 类,你不能这样做。您必须保留 SimpleXML 需要的 类 的名称。

请参阅 this post 了解与您遇到的相同问题(simplexml 无法在激活混淆器的情况下进行编译)。

我建议的第一件事是将其放在混淆文件中(从我链接的 post 中提取):

-keep public class org.simpleframework.** { *; }
-keep class org.simpleframework.xml.** { *; }
-keep class org.simpleframework.xml.core.** { *; }
-keep class org.simpleframework.xml.util.** { *; }

-keepattributes ElementList, Root

-keepclassmembers class * {
    @org.simpleframework.xml.* *;
}

如需更详细的回复,请向我们展示更多信息(proguard 文件、出现错误的代码...)。