🅭

Proxy Troubleshooter app for Android

I decided to make an app for troubleshooting web proxies after experiencing quite a few problems with a web proxy server due to everything from faulty network hardware and an unstable ISP to some good old fashioned misconfiguration. Proxy problems seemed to affect Android devices the worst, leading to apps crashing and the system rebooting. This seemed like a good opportunity to look into developing an application for Android using Android Studio. The result is my new Proxy Troubleshooter app available on the Google Play Store.

The app is quite simple in its execution. It goes through all configured networks on the device, looking for proxies, and will launch a battery of tests against each proxy server in turn. Each problem is displayed to the user in the test log — which is also the main UI component — and report it to the system. The reports are used by the system to drop badly behaved or unavailable proxies in favor of alternative proxies when available — or even to switch the device to another network if the problem persists. This is meant as more of an end-user feature and might potentially annoy some network administrators out there — sorry, guys.

System-level proxy support was only made available in Android 5 “Lollipop”. Some phone manufacturers have added proxy support outside the official Android system in earlier versions of Android, but this is limited to some very few phones. The Proxy Troubleshooter app thus requires Android 5 and can only interact properly with Android’s own proxy support.

Unfortunately, Android’s road to adding proxy support has been less than ideal so far. Third-party apps are somewhat limited by it in Android 5 and the implementation in Android 6 is very buggy. I’ve had to dig through a ton of Android source-code to make any heads-or-tails of the weird behavior and quirks seen in especially Android 6. Practically all app traffic (depending on PAC rule sets or exclusion lists) are directed through proxies in Android 6, which leads to problems when the developers seemingly didn’t bother to test the rewritten PAC handling from Android 5. For example, the proxy selector service works perfectly when the device is plugged into a charger but stops working when it’s running off a battery.

The Proxy Troubleshooter can detect a handful of system-level bugs in Android (like the one above) and will suggest workarounds when your device is currently or has recently been affected by any of them.

This first version doesn’t have an option for verifying the JavaScript grammar of a Proxy Auto-Configuration file (PAC). It verifies that the file can be downloaded by the system, performs some sanity checks on it, and leaves parsing it up to the system. If there’s interest in the app, I hope to find the time later to add some more extensive PAC related functionality, like the app being able to execute and detect the outcome of PAC selectors internally rather than relying on the system.

The app was available for free with ads.

Update (): This app is no longer available.

Don’t miss part two: Experiences with monetizing on Google Play Store!