【问题标题】:App using SimpleXML with minifyEnabled does not work使用带有 minifyEnabled 的 SimpleXML 的应用程序不起作用
【发布时间】:2016-02-11 15:29:19
【问题描述】:

我有一个在调试时可以正常工作的应用程序,但是当我制作发布版本时,在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,在这种情况下检查可能不再完全起作用,还是应该只起作用?

【问题讨论】:

    标签: android simple-framework


    【解决方案1】:

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

    请参阅this post 与您遇到的相同问题(simplexml 无法在激活 proguard 的情况下编译)。

    我建议的第一件事是把它放在 proguard 文件中(从我链接的帖子中提取):

    -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 文件、出现错误的代码...)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多