6

I am having issues using dexguard when it comes to flexjson library. I keep getting the following error when trying to deserialize using JSONDeserializer.

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

Does anyone have the proper rules for flexjson to work properly after obfuscation in android release apks?

Something similar to gson lib.

joseporto
  • 318
  • 2
  • 9

2 Answers2

4

Chances are that this is on a Samsung device -- a few device models and Android versions have problems with some UTF-8 encoded unicode characters. You should try updating DexGuard to the latest version. Otherwise, you can also try working around it by using a simple obfuscation dictionary:

-classobfuscationdictionary empty.txt

where empty.txt is an empty file.

Eric Lafortune
  • 45,150
  • 8
  • 114
  • 106
2

We've had the same issue on a few Samsung devices (Galaxy J1 and J5 on Android 5.1.1). The application just wouldn't start.

There is no information about the issue in Crashlytics nor in Google Play. Eventually we've had contact with GuardSquare who told us to update to the fresh DexGuard 8.0.06. This version includes a new dictionary which solves the ANR on these devices.

Using the line below as Eric mentioned works as well. Although this will only use ASCII chars as a collegae of him mentioned. I've just asked if there is any downside on using this. Cause it might avoid future issues.

-classobfuscationdictionary empty.txt
Ben Groot
  • 5,040
  • 3
  • 40
  • 47
  • Just got a reply on the ASCII vs unicode question: "Using UTF-8 characters is just another extra difficulty to make it harder for hackers to read and understand obfuscated code: it is more difficult to recognize and remember random UTF-8 class names than ASCII class names. Other than that, there are no differences from obfuscation point-of-view." – Ben Groot Aug 14 '17 at 14:57