在开发过程中,发现debug包可以正常运行,release包运行的过程中出现Crash。首先怀疑的点是混淆导致的。然后开始验证自己的推断(装逼模式开启)。
百度百科中讲到:Android代码混淆,又称Android混淆,是伴随着Android系统的流行而产生的一种AndroidAPP保护技术,用于保护APP不被破解和逆向分析。
出现的异常信息如下:
java.lang.NoClassDefFoundError: aavax.xml.stream.FactoryFinder
at a.a.b.b.a(Unknown Source:12)
at a.a.b.b.e(Unknown Source:68)
at a.a.b.b.c(Unknown Source:0)
at a.a.b.c.b(Unknown Source:4)
at e.a.b.p.b.o.j.b.>(Unknown Source:0)
at e.a.b.p.b.a.H(Unknown Source:45)
at e.a.b.p.b.a.>(Unknown Source:11)
at e.a.b.p.b.b.>(Unknown Source:0)
at e.a.b.p.b.m.>(Unknown Source:0)
at e.a.b.p.b.a.I(Unknown Source:4)
at e.a.b.s.y.a(Unknown Source:0)
at e.a.b.t.c.b0.>(Unknown Source:0)
当出现类似上面信息的时候,这个时候就应该是混淆的问题了。
只需要将下面的代码添加到proguard-rules.pro
文件中即可。
-keep class com.bea.xml.stream.** { *;}
-keep class com.wutka.dtd.** { *;}
-keep class org.** { *;}
-keep class aavax.xml.** { *;}
-keep class com.microsoft.schemas.office.x2006.** { *; }
-keep class schemaorg_apache_xmlbeans.** { *; }
-keep class schemasMicrosoftComOfficeExcel.** { *; }
-keep class schemasMicrosoftComOfficeOffice.** { *; }
-keep class schemasMicrosoftComVml.** { *; }
-keep class repackage.** { *; }
-keep class schemaorg_apache_xmlbeans.** { *; }
如图: