Technology · Mobile Apps

How to make the mobile app running well on all Android phones?

Jiemin Li Entrepreneur and Investor

September 16th, 2015

Some customers reported that our app doesn't run well on their phones.  We have several iPhone models and Android phone models in our lab, and we can't reproduce the problems. It appears the customers use the manufactory/model of phones we don't have in our lab. For consumer facing app, how to make sure it runs well on all Android phones? 

John Anderson

September 16th, 2015

Developing mobile apps that work well across *all* Android phones is an uphill battle.  There are so many different screen resolutions, densities, and hardware variations, you can't test against all.

Android simulators are a decent way of testing out different screen resolutions and densities, but it could give you a false positive on hardware performance.  The only way to see how it will run on an actual phone is to run it on an actual phone.

If you're app isn't doing so already, you should add some basic analytics so you can at least see the phone models/manufacturers that people are using.  Then you can at least see what % of your users are using what phones.  This could help in decided where to spend energy to optimize the app for the most widely used models.

Worst case, you can dumb down the app so that it might not be trying to do things as fancy as you might want.  Having an HTML5 version of the app might be a help to users to have trouble with the app, but that's a big development burden as well.

No easy answers here, you just need to decide what battles to fight based on your user audience and the devices they are using.

Doug Winter Founder and Director of Isotoma

September 16th, 2015

Sounds like you need something like this: https://aws.amazon.com/device-farm/ Cheers, Doug.

Hasan Diwan contract Data Scientist to several startups

September 16th, 2015

http://www.techrepublic.com/blog/software-engineer/remote-test-your-android-apps-with-these-services/ Perhaps one of the services listed here would be useful? -- H

Joanan Hernandez CEO & Founder at Mollejuo

September 16th, 2015

It depends on what the app does. Unless the app needs direct hardware access, erratic behaviour shouldn't happen as long as the app respects Android API.

One important factor for you to consider is that, on some of the phones that might not be behaving properly, could be phones stuck in an old Android version. Starting after Android 4, the API was put in order. So, it might be easier for you to concentrate to develop for Android 4 and up, than to try to satisfy everybody. As it was mentioned here, the analytics software will tell you on which version your users are in.

You can then, limit your app in the Google Store to only be available for Android 4 and up (or any other version for that matter). If you have a lot of re$ources, then you can tailor one version of the app to work on Android 2.3, and another for 4.0 and above. Of course, this approach cost more money as you will have two different apps to support.

Cheers!

Jiemin Li Entrepreneur and Investor

September 16th, 2015

Thank you all for great suggestions. We will try the 3rd party testing sites.  

Guntis Urtans Managing Partner at Colabpro

September 16th, 2015

you may try http://www.perfectomobile.com or similar

Benjamin Olding Co-founder, Board Member at Jana

September 16th, 2015

+1 to John's answer... there's no easy answer here unfortunately.  I'll add a few comments from a product viewpoint and then from an engineering viewpoint.

Product: You need to apply the idea of the 80/20 rule here - given the insane variety of Android phones out in the world today you're unlikely to get your app working well on 100% of them.  So, you've got to conserve your efforts to focus on the most important phones.  John suggests adding analytics to your app so you can see what your present users own.  You should definitely do this, but from a product perspective it's not actually much of a solution: what you really care about is the hardware/OS breakdown of potential users of your app.  This is not the same as the present users, since users who can't run your app are (by definition) not using it yet.

This task inherently requires guesswork; do your best, but realize this is always going to be an ongoing problem for your product team.  My advice would be to focus on your early adopters - users who will be passionate about your app initially.  These users tend to be correlated with newer models.  Popular new hardware still varies pretty wildly geographically, so know what region you are focusing on as well.  Beyond that, take time to profile people you believe are representative of your early adopters and don't be afraid to ask them what their phone setup is...  People taking the time to actually complain to you about problems are gold - try to build relationships with them if you can.  Most users with problems just leave and never come back.

Engineering: You need to add as much instrumentation as you can get away with to programatically detect failures (ex: Crashlytics, but you can roll some of your own too to detect specific feature usage, etc).  If your product team has user flow funnels, see if you can correlate user drop off with phone model.  Unfortunately, this only works once you have a very popular app - otherwise you generally can't get enough data to do this well (beyond finding problems that affect a lot of your existing user base).

Once you decide you want to troubleshoot a specific phone you don't own yourself yet, you can find someone in the world with that phone/OS combo and work with them remotely.  Locally here in Boston there's a company called utest.com that helps coordinate efforts like this, but there are lots of competitors to them now too you can find.  You can also try going direct to non-professional testers on something like upwork.com to target specific geographic regions/networks in additions to phones.

In the meantime, you should also be continually adding to your own phone library.  Try to acquire the most common new phones in other regions of the world by having someone purchase it locally and ship it to you.  The average phone user in the world today gets a new phone *every 18 months*.  Your library needs to be completely renewed on that time scale as well unfortunately.

Yes, this whole thing is a pain.  There's no easy way out though if you want an app that scales globally - the sooner you fully embrace this challenge, the better off you'll be.  Also remember that people in other parts of the world can often be on slow networks - problems can arise when you're using too much data (so be thoughtful about the instrumentation you do add - don't be afraid of it, but realize that - in the extreme - it can degrade performance; be sure to track % of data you are using in your app for internal development vs. app functionality).

And finally... if you really want an app that works across a huge array of Android hardware/OS configurations, there's sadly no substitute for having a high-quality engineering team.  If you find your team staring blankly back at you while saying helpful things like "well it works fine on my device," don't rule out putting more effort into HR as another way to address this problem too...