16

I have a new android app I put on the marketplace a few days ago. I did quite a bit of testing on my moto droid before publishing it and tried to be very thorough. Well, I got some negative comments back on how it didnt run right on someone's EVO 2.2 or X10 (didnt even know what that was at first). Well, it runs perfect on my phone.

Any advice on how I'm supposed to fix or support an app that runs on like 100 different phones?

How are other developers approaching this? (without actually buying every phone out there). Thanks.

Dan Dyer
  • 53,737
  • 19
  • 129
  • 165
Nick
  • 1,340
  • 1
  • 15
  • 23
  • Very good question. I'm wondering the same thing. – Lucas B Aug 16 '10 at 21:39
  • I appreciate all the answers. I understand the hardware differences with screens, cameras, audio, etc. My app uses none of that stuff, only: android.permission.ACCESS_WIFI_STATE android.permission.ACCESS_NETWORK_STATE android.permission.INTERNET android.permission.CHANGE_WIFI_STATE There's got to be a better way than just guessing at stuff and taking negative comments and 1 stars the whole time. – Nick Aug 16 '10 at 23:21
  • What specific problems have you had? – Cheryl Simon Aug 17 '10 at 02:07
  • I've had no problems on my moto droid I'm using for dev. From user comments I'm seeing people are reporting either a blank screen after a button is pressed (button starts a process) or a force close. – Nick Aug 17 '10 at 13:02
  • Oh ok, so you haven't figured out whats causing it yet? I was just curious, since that could tell you a class of problems to try to test for, or to think about. – Cheryl Simon Aug 17 '10 at 17:01

5 Answers5

7

I don't think there is a silver bullet for avoiding these kind of problems. A couple of guidelines/suggestions:

Preventing problems:

  • Use only publicly documented APIs. If you depend on implementation details, things are likely to fail on different phones.
  • Follow the guidelines for supporting multiple screens, and make sure to test each of the combinations of screen sizes and densities in the emulator.
  • If you are using lots of openGL, research which extensions are supported by which phones. This is where a largest number of the problems tend to be.
  • Recruit your friends to be beta testers. You can send them an apk to load before publishing on the market.

Diagnosing problems:

  • Starting with Android 2.2, you will be able to get error reports back from users, which should help in quickly diagnosing problems: Android Application Error Reports
  • You can also implement something like remote stack trace to get error messages back in the meantime.
Cheryl Simon
  • 46,552
  • 15
  • 93
  • 82
2

I think a good approach is making sure your logging all your error's and receiving them from the users remotely. This post has a good solution : How do I obtain crash-data from my Android application?

Community
  • 1
  • 1
ninjasense
  • 13,756
  • 19
  • 75
  • 92
2

One option that I am considering is some kind of public beta. Provide a free version on the market, clearly marked as a beta, with instructions to e-mail details of the device used and any problems encountered. If you intend to charge for the final version you'll want to make the beta version time-limited or restricted in some other way. You can delete the beta version from the market, and with it any negative feedback, when you release the full version.

An alternative to doing this on the official market is to upload to the pre-release area of AndAppStore.

As for the X10, in my limited experience this phone seems to crop up quite frequently when it comes to complaints of apps not working, particularly if it relates to sound. Sony-Ericsson have released an X10 add-on for the Android SDK, so that you can make your emulator look like an X10, though I'm not sure how much difference it makes to its behaviour.

Dan Dyer
  • 53,737
  • 19
  • 129
  • 165
2

Or use a testing community, so people with different devices can give actually test your app, and provide feedback.

Ellinor
  • 31
  • 1
0

Logging all user activity is a good way evaluating how the app performs on different apis/devices.

Google Firebase is Google's latest(2016) way to provide you with crash/error data on your phone. Include it in your build.gradle file :

compile 'com.google.firebase:firebase-crash:9.0.0'

Fatal crashes are logged automatically without requiring user input and you can also log non-fatal crashes or other events like so :

try
{

}
catch(Exception ex)
{
    FirebaseCrash.report(new Exception(ex.toString()));
}
Freek Nortier
  • 780
  • 1
  • 13
  • 27