2016-09-16 95 views
4

当涉及到flexjson库时,我遇到了使用dexguard的问题。尝试使用JSONDeserializer进行反序列化时,我不断收到以下错误。Flexjson和Dexguard/Proguard

**09-15 20:46:10.271 10901-11552/** **A/art: sart/runtime/class_linker.cc:3430] Check failed: klass->IsProxyClass()** 

有没有人有适当的规则Flexjson在Android发布apks混淆后正常工作?

与gson lib类似的东西。

回答

2

很可能这是在三星设备上 - 少数设备型号和Android版本在使用某些UTF-8编码的unicode字符时遇到问题。您应该尝试将DexGuard更新为最新版本。否则,您还可以尝试使用简单的混淆字典来解决该问题:

-classobfuscationdictionary empty.txt 

其中empty.txt是一个空文件。

+0

即使在添加最新的jar之后,它仍然失败。你的建议几乎解决了我的问题!谢谢!你能解释一下这项工作在做什么? – joseporto

+0

这是在未来版本中修复的吗? – joseporto

+0

解决方法避免使用unicode字符的类名称,这些字符有些Samsung设备无法正确处理。 –

1

我们在少数三星设备(Android 5.1.1上的Galaxy J1和J5)上遇到了同样的问题。应用程序不会启动。

在Crashlytics和Google Play中没有关于此问题的信息。最终我们与GuardSquare联系过,后者告诉我们要更新到新鲜的DexGuard 8.0.06。该版本包含一个新的字典,可解决这些设备上的ANR。

使用下面的行作为Eric提到的作品。虽然这只会使用ASCII字符作为他提到的一个同学。我刚才问过是否有使用这个缺点。因为它可能会避免未来的问题。

-classobfuscationdictionary empty.txt 
+0

刚刚得到了关于ASCII与unicode问题的回复:“使用UTF-8字符是使黑客更难以阅读和理解混淆代码的另一个额外难点:识别和记忆随机UTF-8类名称更加困难而不是ASCII类名,除此之外,与混淆视点没有区别。“ –