签名发布构建调用第三方AAR SDK报错,求对应ProGuard规则
解决Release构建中SimpleXML实例化第三方SDK类的ProGuard规则
这个问题是因为Release构建开启ProGuard混淆后,com.ecs.abc.ESignProcessor类的关键信息被混淆或移除,导致SimpleXML无法通过反射实例化它——Debug模式未开启混淆,类结构完整所以能正常工作。
你需要添加以下ProGuard规则来修复:
- 核心规则:保留目标类的无参构造函数和所有成员,避免混淆
-keep class com.ecs.abc.ESignProcessor { public <init>(); // 保留无参构造函数,SimpleXML反射实例化必需 *; // 保留所有成员变量和方法,防止XML映射失败 }
- 补充规则:确保SimpleXML的注解和核心类不被混淆(如果该SDK使用了SimpleXML注解)
# 保留SimpleXML的注解类和核心类 -keep class org.simpleframework.xml.** { *; } -keepattributes *Annotation* // 保留所有注解,确保XML解析逻辑正常
- 可选扩展:如果该SDK包下还有其他被SimpleXML依赖的类,直接保留整个包
-keep class com.ecs.abc.** { *; }
这些规则的作用是:阻止ProGuard重命名类、删除无参构造函数或移除注解,保证SimpleXML能够正常通过反射实例化ESignProcessor并完成XML解析相关操作。
内容的提问来源于stack exchange,提问作者Chinmay Gawde
相关产品推荐
相关产品推荐

