Originally posted on Medium
The Totem Spirits game is in the market for a few weeks already and this day came inevitably — I received the first crash report. To be honest, there were 5 of them, but all from one device, so the error is the same.
I was truly surprised by this! My game was tested by several people and already downloaded by 50+ more. There were no errors till November 7th when someone with Samsung Galaxy Trend Plus (768MB RAM, Android 4.2) got the game. If by any chance you are reading this article, please, know that I’m deeply sorry that you can’t play!
Then, I checked the error (aka stack trace) and became even more surprised because this error… told me nothing. Of course I can find the exact place in the code where this problem occurred but there is literally nothing wrong with it! (It works for 50+ other devices, remember?). Moreover, it is not reproducible on any of my devices — I even ran the game without any issues on an old Acer Liquid MT (which BTW was released 7 years ago).
Looks like a dead-end one might say, but I didn’t give up. There are several ways to ask for help in the developer’s world. In this case I decided to create a topic on libGDX (game engine) forum and ask them directly because the issue seems to be in the core library itself. In addition to this I also asked a question on StackOverflow (so unpredictable).
Now it’s time to give a little insight into the error. The crash report in Google Play Console looks like this:
Even if you are not familiar with libGDX, you may find some keywords like: xml, parser, fileHandle, rootElement from which you can guess that the error lies somewhere in xml file parsing. And this is totally correct! The application on this device failed to parse locally stored file needed for the game to behave properly. What was even stranger — look at the stack trace once again. Have you noticed that there are no custom messages in exceptions? But the developers of the game engine are quite smart guys so the messages are actually exist in the source code. Looks like magic to me…
Although, there were some problems with the engine itself too, I fixed’em already with this PR .
As sad as it sounds, so far there is no resolution, but I’m not going to give up on this. When you develop for hundreds different Android devices occasional errors are inevitable. It is just impossible to test a product on each and every smartphone out there. But I believe every problem should be fixed anyhow. After all, if there is no other way some devices may be marked as “Excluded” in Google Developer Console. No support — no problems, right? :)