7

I've spent the past few years working on iOS apps, and I'm now giving some serious consideration to creating an Android port of one of my apps.

I'm sure that complaints about fragmentation are a frustrating cliche to experienced Android programmers, but as an iOS programmer, I'm quite honestly overwhelmed by the number of configurations and devices that my app might end up running on.

There are literally thousands of Android devices in the wild, but I know there are successful Android developers in the world and I know they're not testing or developing for thousands of different devices.

So how can a relatively small company deal with fragmentation? Is it possible to pick the five or six most popular devices, focus on those and prevent the app from being installed on any other devices? Are there any other strategies for practically dealing with the number of different configurations an app will face?

Bill
  • 972
  • 8
  • 12
  • 7
    Just handle it the same way you would if you were developing for Windows, which has been dealing with "fragmentation" for decades now. – Mason Wheeler Nov 26 '12 at 22:00
  • 3
    In reality, I'll bet dollars to doughnuts (and I really like doughnuts) that dealing with fragmentation as a web developer is a far larger pain, or at least it was over the course of the entire decade ca. 2000-2010 and that didn't cause people terrible pains. Actually it did, I was there, I remember, but it was dealable. – Jimmy Hoffa Nov 26 '12 at 22:50
  • 2
    they develop for iOS and forget about Android, given the massive Apple AppStore sales ratios to Android app sales, this is actually a reasonable alternative. –  Nov 26 '12 at 22:57
  • Don't fear fragmentation... Embrace it! (According to Hugo Visser via http://www.apps-world.net/europe/images/stories/presentation2012/droid-d2-1120-hugo-visser-qbus.pdf) – Johan Pelgrim Nov 27 '12 at 08:19
  • 2
    From what I've heard, the only area where fragmentation is really painful is 3D games. For everything else, decide on a minimal API level, use fluid layouts, and you have a very good chance of running on almost all devices without problems. – Michael Borgwardt Nov 28 '12 at 11:05
  • Whatever you do, don't arbitrarily deny devices your app. – amara Nov 28 '12 at 13:06
  • @JimmyHoffa How bad are the effects of fragmentation when dealing with VOIP apps on android? Or some kind of augmented reality app? I'd imagine if you have to access those types of resources, it would be more painful than web compatibility issues during the 2000s? What you think? – John Aug 03 '13 at 01:06
  • I think it depends on how popular your app will be. I was reading "How to build a Billion Dollar App". The authors advice is to have at least 10 of the top Android devices on hand to make sure it runs correctly. – user103210 Oct 20 '14 at 18:03

3 Answers3

10

Android is great at dealing with flexible designs that run across multiple devices. It's a huge topic that can't be expanded in detail as an answer, but I think fragmentation has gotten a bad rap. It really isn't that bad, and isn't that hard to handle.

It's great to see your App run from small screen phones to large 10" tablets, and Android handles all the layout of the fragments for you. I think you'll find iOS development could take a thing or two from Android ;).

What I've found is the App often has an objective of what it needs to achieve. As you develop you discover that the lower Android API levels don't meet those needs. So rather then thinking about what devices you need to target. Decide first on what Android version you must use to build the App.

Also, people using older Android platforms also might have a phone that can't handle the needs of the App anyway. So dropping support for older versions isn't really a loss, because it wouldn't have worked very well for them anyway (but that depends more on the App).

Reactgular
  • 13,040
  • 4
  • 48
  • 81
  • 4
    And you can [use this page](http://developer.android.com/about/dashboards/index.html) to decide on what version(s) to support. – Izkata Nov 26 '12 at 21:54
  • While Gingerbread is shown to be the largest it's also possible that most Gingerbread devices are stuck at that level. Where as, the number of Honeycomb is so small because those devices were able to update. That means in my mind, that Gingerbread is hardware that can't handle more where as Honeycomb devices had the power to run Ice Cream. People using Gingerbread are more likely to replace the device then to update it to higher API level. It's the same with iPhone 3. There's a lot of them, but they aren't that great as a target. – Reactgular Nov 26 '12 at 22:47
1

I think the biggest difficulty is supporting various screen sizes, especially in very graphical interfaces. Display size can vary quite a lot and also h/w ratio and number of pixels. In Android you can specify different resources for each of these cases, and possibly for all their combinations (long/hi-res/small, square/mid-res/medium,...), which would mean a large amount of configurations - which would mean quite a mess of course.

So it might not be easy to come out with a layout and small set of resources that can support most configurations, and it's important that graphical designers learn the tools and tricks they can leverage to achieve this.

On the API side, I think Google does some good efforts in backward compatibility, also mantaining a nice backport of the most useful new features.

bigstones
  • 796
  • 1
  • 8
  • 16
1

One resource to consider is vendor loaner or rental programs for development partners (developer partner programs). Some provide short-term access for testing purposes affordably, perhaps even free.
Most of the hardware vendors have developer programs, which offer hardware for reduced costs or even free (e.g. Samsung, Motorola, Apple, BlackBerry (for BlackBerry Alliance Members), LG). Check them out for the devices you want/need.

There are publicly accessible 'physical' test labs that you can just walk into (or reserve time). They are usually called open device labs: starting point, Google search. Check out if there are any in your neighbourhood and what devices they have.

There's the occasional 'crowdsourced' testing community like uTest that you can ask around.

Note that there are also many on-line services for testing your apps on many devices like AppThwack, TestFlight, TestObject, TestFairy, Keynote a.k.a. DeviceAnywhere, or Xamarin test cloud that maybe have the device you want to test on.
You would also use these before releasing your app, and although these are not 'definitive' testing platforms (there's much to be said for testing on real devices), any tests helps.

Note: Useful overview article

Jan Doggen
  • 1,140
  • 4
  • 16
  • 22