Capturing Android Exceptions remotely

Just discovered how to automatically get force-close reports from users. Most amazing thing to happen for weeks! Probably you know already but here is the description:

http://nullwire.com/capturing_android_exceptions_remotely

I used it and it worked great! Although I ended up having to manually delete 10000s of files with force-close errors (mostly memory problem).

You know the Android Market shows bug reports NOW!?

No, didn’t know that! Where do I see the market bug reports? Are they available on 2.1?

I think they are independent of version, or at least for some versions lower than 2.2. I have had some reports dating from the 13th of May pre-dating the release of 2.2.

It is pretty handy and has helped me find a few errors. A big plus is the zero effort required on our part to get this information about exceptions.

I used the nullwire solution too, though - for some reason I haven’t been able to figure out - I get lots and lots of duplicate messages; up to 10 per individual error sometimes.

The Console exception reports (look on the console - it should have a link Bugs) is excellent, but from what little I understand, it is only enabled on a limited number of phones. So you just don’t get a realistic impression about how error-prone your application is. I’ve read posts that suggest that it is only some Droids and Nexus One’s that have this enabled, though I haven’t seen any concrete info.

For example, one of my apps has some 10-15 exceptions per day, but I have yet to see a single error in the console.

It seems unlikely that Android OS 1.5 does not register any exceptions through the console. The 2.2 OS broke builds for 1.5 under certain circumstances, and I had a few hours yesterday where everyone who tried to run the app on an OS 1.5 phone suffered FCs. Not a peep in the console. Which is a pity, since I suspect that a disproportionate amount of the really nasty errors (OOM, etc.) occur on 1.5 phones.

I find Flurry quite useful in terms of determining how stable my apps are. If only their handling of exceptions was better, it would be a near-perfect service.

Nullwire.com seems to have dropped off the internet, so I’ve rejiggered their exception-catcher somewhat.
It still works in much the same way: it catches uncaught exceptions and saves a log, on the next launch, saved logs are found and dispatched.

The differences are:

  • Just one class
  • Loads of information included in logs as standard: Package version, device, SDK version, brand, product, etc
  • You can append additional arbitrary information to crash logs

The main change is that the user is prompted to send saved crash reports directly by email, rather than having them uploaded invisibly. On the upside:

  • You don’t have to ask for network permissions
  • Paranoid users can see what information you’re gathering
  • Helpful users can append more information to the email
  • It opens a dialog between you and the user - you can reply asking for more information, with an updated APK, etc

On the downside I guess it looks a little unprofessional. However, your app has just force-closed, so the sheen may already be off the apple.

Code is over here.

Haven’t checked the code out yet Ryan, but thanks for adding the link.
If you’ve written a great game/app then most users wouldn’t care about submitting information. I’ve found this to be the case with some facebook apps that I’ve written and they will willingly hand over their details as long as it is clear you won’t misuse them.

Useful stuff, thanks for sharing!