This Is What Developing For Android Looks Like
techcrunch.com
techcrunch.com
This is some of the most insulting garbage out there. I'm an Android developer. I don't complain about fragmentation. Ever. Don't you dare lump me into a group of people you hear complaining loudly. I'm not one of them!
I know it can be hard to get apps to work across all phones. The variety of available hardware is part of what makes the ecosystem so amazing. Of course there will be difficulties that arise from the range of devices (dynamically positioning text to align with a set image background across every screen size and resolution can be difficult, I'll admit) but those problems are not something to complain about, and frankly, they're not any kind of showstopper.
The variety in devices allows me to build apps like pressureNET, which uses barometers built in to some phones. I could never be building a groundbreaking, innovative weather network without different ideas and different manufacturers trying things out. As a developer, I love the variety available in Android devices. It's what makes the ecosystem thrive and it's what makes me thrive as a developer.
I hate this "all Android developers complain about X" bullshit. It's wrong, insulting, and counter-productive to everyone who's trying to build the next great app. Stop it.
The developer tools do an excellent job helping test for and deal with errors on the different in the Android ecosystem.
On more data point here: we just ported our fairly complex app (a file manager) from Honeycomb back to Froyo. If we had access to that many devices, of course we would have tested it on all of them, but our experience has been that using a few devices and some emulator configurations you can do surprisingly well enough. Not a single complaint so far, although admittedly our user base only approaches about 20k.
I think these articles exaggerate the effect of the fragmentation. It exists, it costs us developers some time and money, but not even close to being a "nightmare".
Most want their apps to work on ALL phones.
But just as developing for any other open platform, attempting to reach 100% compatibility with every device combination is both insane and unnecessary. A range of 5-10 devices is usually sufficient for the 99% of users that most apps will be happy to support.
2.) Min API level you want to support
3.) top spec phone with latest version (pref. a recent nexus)
That is for native platform apps, not Game ports.
From my experience, crucial to success is that you write your Apps according to the Android documentation, and not just "until they work on my device". Most "single device issues" happen because of this mistake.
Most of the issues developers have when they switch devices
In fact, nowhere do we find Mr. Slu complaining about the ecosystem. The only person putting forth the we are in a horrid state of affairs line is the author of the article.
I suspect that the picture from Animoca was taken as a statement of the company's quality, asserting that "Our company takes the time to QA on all these devices. You the consumer can be assured that our apps will work on your phone, no matter what you use." The picture, to me, is a statement of pride, rather than a display of frustration.
So it looks more like the author had an agenda, and tried to put a square piece into a round hole.
[1] “We like fragmentation as users prefer choice. We are not big believers that one size fits all.”
Working on several high profile apps here in Denmark I have felt the pain of not having enough real devices to test on. A bank just wont accept that you don't support one of the most common phone on the market because it has some problems with the camera.
Another project ran into the BigInteger.modPow is not thread safe issue way too late in the development process because we didn't test intensively on pre 2.3 devices.
After facing all these issues, my current project run automated test on 20 physical devices daily. It also helps us keep the UI looking sharp on all devices.
Hell yes that app should be supporting the Galaxy S2s and HTC Desires of this world, but the majority of those 400+ devices will probably be used by < 0.0001% of your users, particularly if the app is targeting a Western audience.
By looking at device usage stats I would say that 20 devices will get you above 90% in one region but you have to use closer to 40 if you aim for 90% on the global market. (Of course it depends on your user base)
However, having 400 devices on the shelf for debugging when you get some strange error report might be very valuable. I would love to have a bucket of CDMA phones available since I can't just go buy one in the store. (I live in Denmark)
http://groups.google.com/group/TVIC
Second Thursday of every month, so unfortunately you've missed May's--but sign up to the mailing list now and you'll be reminded for June...
We had seventeen people turn up this month including a bunch of new people so that was encouraging. Apparently the quakes haven't done us in completely. :)
Only if you want to try to make great apps instead of just good apps. As someone who has made both (i.e. really polish vs. just get it out there), if you want to make something really good it needs to be pixel perfect. Unfortunately that is something that is infinitely harder to do on Android than iOS. It is also why in general iOS apps look better than their Android counterparts.
Yat also wasn't really complaining about the state of affairs on Android at all. He's happy to QA test with 400 devices and he thinks it's why his company performs well relative to other game developers who don't do as comprehensive a job.
I just thought it was a hilarious photo about the lengths that one Android developer will go to make their apps work. :)
No but seriously, I talk to a lot of the top free and top grossing developers and taking QA seriously is a big deal. It matters. Not everyone takes it seriously and it affects your user reviews. At least that is Animoca's thesis and that's why they use 400 devices.
So you talk to many of the top developers. That's great, how about we hear from a selection of them? How many devices do most of them test on? Taking QA seriously is not the same thing as testing on hundreds of devices.
So when are we going to see the other side of the "debate"? Personally, I don't see a debate at all, just some pageview-bait article that takes a single developer and makes out like this is normal.
They have an overflowing safe that is no longer able to contain all of the Android devices they QA test with...
My own app is tested on 4 devices (three phones and a tablet) and 2 of those devices were given to me by friends. I'm certainly not a top tier developer, but looking at a single developer who tests on 400 devices and saying "this is what developing for Android is like" is simply factually incorrect. Especially when another top tier developer is only testing on 30 devices. And ESPECIALLY when the vast majority of "normal" Android developers test on a handful of devices only.
Maybe it's a competitive advantage to test on 400 devices. But it's not REQUIRED, and it's certainly not NORMAL.
What I can do however, is do many stories per day, and consistently talk on background to multiple devs every week about their concerns. QA testing for Android has been an on-and-off concern for years.
Animoca has talked to me about it a couple times over the last 18 months, but this image for whatever reason happened to go viral.
This story hit a chord. I had some sense it would but I couldn't have 100% predicted it.
Now, hn, could we please not discourage authors from joining the discussion here? If you hit the down arrow and the post turns grey they really deserve an explanatory post. Even though it's "obvious".
The way you wrote the headline suggests that you do have an agenda.
Unless you think Techcrunch should not be taken seriously, a lot of people would think that Android is such an awful platform to develop in and would stay away from it.
I've been an Android developer for 3+ years. I only test in 3 phones and my apps work in majority of devices. If a developer follow most best practices, a lot of fragmentation issues go away.
I understand that you are trying to be hilarious but it just contributes to FUDs on Android that has really not much basis.
This was not meant to be a warning for devs to stay away of Android, but doing more extensive QA testing is a reality of the platform.
What's your app? How many DLs does it have? How many DAU do you have?
But you know what's a better example? Netflix. They test on 10 phones & 4 tablets.
http://techblog.netflix.com/2012/03/testing-netflix-on-andro...
Netflix App has at least 10 million installs - https://play.google.com/store/apps/details?id=com.netflix.me....
"We figured out the optimal combination of devices to give us maximum coverage. We are able to reduce our daily smoke automation devices to around 10 phones and 4 tablets and keep the rest for the longer release wide test cycles."
"This was not meant to be a warning for devs to stay away of Android, but doing more extensive QA testing is a reality of the platform."
Your headline & picture suggest otherwise.
Honestly, is this a Techcrunch thing? Before you worked at Techcrunch, I can't remember you writing a post like this. Too much snark and mocking a platform (and hence, a community).
Either you are being dishonest about this claim or you are simply a bad reporter who wasn't able to convey her intention in her writing.
Your article is clearly biased against Android, whether you meant it this way or not.
I don't complain that I have to target different systems. I use this stuff because I want to target many different systems.
Take a closer look at all these devices in the article, and imagine for a moment that every single one of these would be as incompatible to one another as iOS is to Windows Phone.
That is: Imagine you had to write a complete new App for every single one of these devices. Android is a defragmentation tool.
Look, fragmentation has costs. Outside the core APIs (and especially with hardware-facing interfaces) you need to expect to do some testing. Screens have different resolutions. PVR and Mali have different rendering bugs. Different cameras have different quirks. But to baldly pretend that this requires exhaustive testing on hundreds of devices is just sensationalist nonsense.
"This is what developing for Windows looks like".
I'm sure it would be an order of magnitude bigger, maybe 2 or 3 depending on how far back you decide to go.
Or even add up all the mac models from the last 5 years. Heck, I have friends still using power PC macs.
The same is also true for Android. Most (all?) of the valid complaint about how hard it is to target different Android devices comes from game developers struggling to get which version of OpenGL to use, which OpenGL API calls are bugged on which devices, how to circumvent low level GPU limitations on this or that device, etc. And afaik, those are usually based on incomplete and broken implementations by GPU vendors as well. Same as with windows.
Most of the regular utility app, which use normal Android layout and API instead of OpenGL, are doing fine just testing their app in different AVDs (instances of the emulator) just to make sure they're compatible with different devices.
(then of course, there's a few newbies who didn't spend 10 minutes reading the guide for running on different devices on d.android.com, then whine their app's font looks different on a friend's phone. But I'm counting those out)
I'd like to hear more on this issue though.
The real issue, I'm convinced, is that a bunch of people with no previous development experience jumped in with the iPhone gold rush. Then these people decided to branch out to Android and are shocked and horrified when something works slightly differently on their customer's phone than when it does on their phone.
God forbid that these people should every try developing Javascript applications that have to support support IE. :-D
Next time you fire up your image editing program on a PC resize the window to 90%, 70%, 50%, 30%. Try and use your application.
At the smaller windows sizes you just can't. There is simply not enough real estate to accommodate the UI.
Desktop applications have simply assumed you have a certain amount of real estate at some given level of technology. Anything better is usually just gravy since you have everything you need on your screen.
We know simply resizing does not work. Just try an iPhone app on an iPad at 2x.
I'd wager the points where you have to reconsider the UI are much closer together at small sizes. An extra half inch in screen size could allow just one more icon and make your app that little bit nicer to use.
Even if you fix the hardware compatibility problem (they solved it for PCs) it's still going to suck without new ways to design apps.
Another reason for the higher focus on QA is "user ratings". Before companies didn't have to worry much about not supporting all users. With mobile a small percentage of users can give you a bad rating. The bosses are terrified about bad public ratings! :)
In the early days of MS-DOS compatibility was a big problem too. Magazines used to use MS Flight Simultor to test how compatible PCs were - plenty failed that.
It doesn't look like there any similar gold standard is emerging for phones.
For non gaming apps, testing on Samsung & HTCs is usually enough to cover 90% of the market.
Gaming graphics makes that more complicated, but the truth is that people still find driver and game bugs on Windows.
1) Filter via your manifest file: Allow installation only on devices with certain screen sizes or hardware like GPS or Camera
(Description: http://developer.android.com/guide/appendix/market-filters.h... )
2) Filter via Developer Console: Exclude specific device models or countries
I'm pretty sure it's not. Do you really think everyone who's written a successful Android app has a full stable of hundreds of phones?
This sounds about right from my experience: http://techblog.netflix.com/2012/03/testing-netflix-on-andro...
Part of the problem is Google is releasing OSes faster than devices can keep up, and in a few cases I'm buying simply because the prior's OS is stuck yet I have to satisfy new devices users too. For example, I have Galaxy Tab from IO which is stuck on 3.1, but all new tablets use 4.0 and there's unexpected differences between them.
The killer reason for us is the dreaded 1-star review because we missed a particular combo (screen/OS). We have > 1M users between 2 apps w/ 4.2+ ratings each as a result.
Once you're making some good $$, you really can't afford not to have a device library.
This is very obvious when looking at app ratings - users seem to blame model even if problem is entirely unrelated.
Hell, the Play Store ratings shows the user's model/device name under each user's review... that leads users to quickly blame their model type.
http://www.perfectomobile.com/portal/cms/android.html http://testdroid.com/product/testdroid-cloud
The solutions are already out there! Quit whining and get back to developing cool apps. :-)
Cloud service: https://www.lesspainful.com
Framework for testing Android apps using Cucumber: https://github.com/calabash/calabash-android/
Why not test on the must common devices or top device in each main category?
Is fragmentation a real issue? First time I have heard about it. Is this like browser compatibility for web developers?
Yes, fragmentations make it a bit harder on developers, but that's why we get paid the big bucks.
Choice is good for users, you won't hear a lot of Android users complain about fragmentation.
It's surprisingly common place at enterprise companies who need to support a wide range of devices.