Devs Grapple With 100+ Versions of Android
Barence writes "The scale of the challenge facing Android developers has been laid bare by Twitter client TweetDeck. During beta testing of its new software, TweetDeck encountered more than 36,000 testers using an enormous pool of 244 different handsets. Not only was hardware for the platform fragmented, but Tweetdeck had to contend with more than a hundred different versions of Android, highlighting just how muddled the market is for the open-source platform. The splintering of Android is making life difficult for app developers. 'It's not particularly harder to develop for Android over iPhone (from a programming standpoint),' said Christopher Pabon, a developer who writes apps for both the iPhone and Android platforms. 'Except when it comes to final quality assurance and testing. Then it can be a nightmare (a manageable nightmare, mind you).'"
They forgot one bit of relevant information. So how long did it this massive job take?
This is not the penguin you're looking for.
Oliver's law of assumed responsibility: If you're seen fixing it, you will be blamed for breaking it.
Seriously, this is getting as bad as Engadget with their phantom Android Fragmentation issue.
You have a basic hardware spec (number of buttons etc) laid out by the OHSA, you have processors of varying speeds and some have keyboards and better GPUs. The market can already limit what you see based on these requirements. App developers just need to think about the spec they want vs the number of handsets of that spec in the market. Hell, if your app's good enough, it'll drive the spec of the handset. It's just like what they have to do in the world of PC app development, made easier due to the rapid churn of handset specs as they get steadily faster and cheaper.
Android's not doing at all badly compared to Apple's iOS, is it?
It's interesting to me that this is the same problem facing PC's, where there are hundreds of different versions of open source OSes vs. Windows/OSX.
How does this fragmentation difficulty compare to development for developing for PCs across a few OS variants and and effectively infinite configurations available for PCs?
Apple by controlling the OS and hardware out of the starting gate had it right. Microsoft learned it the hard way after years of unsupportable carrier-specific hacks of their Windows Mobile OS, culminating in a much more rigidly defined Windows Mobile 7. Phones that are difficult to upgrade and that cannot run software that runs on other similar phones hurts brand loyalty. If Google wants to retain loyal customers in the mobile market, they are going to have to consolidate these variants and force a single, portable, upgradable OS like Apple and Microsoft are doing.
I'd take Java over ObjectiveC any day.
Anonymous App Developer with Nice Sales
Programmers write software for a myriad of different versions of Windows running on thousands of different types of hardware without these QA issues. What is Android doing that causes this problem?
this signature has been removed due to a DMCA takedown notice
I understand that platforms like consoles and the iCool stuff benefit from the unified platform, but why is this SUCH a big issue? Computers were always fragmented and no two machines were the same in my vicinity, yet still there was working software everywhere - sometimes even crossing OS-borders (playing q3 between different windows and linux versions was never a problem).
I am not a coder, so could someone explain to me why all of a sudden diversity is such a problem?
2.2, 2.1 update 1, 2.1, something called 020201 (2.0?) and 1.6 account for almost all of the users. The remainder are custom ROMs you're not really obliged to support. Not that having five major releases operating in the wild is much better, mind.
No kidding!!! What do you say at this point?
As an AC developer, I call BS - have you looked at the "versions" of Android they identified? "Baked Snack 1.0 Epic" or
"5.0 Welcome to Prisneyland, Fish"? Most of the versions (I dont see the numbers, but I would guess about 80%+ from the chart) are 2.2, 2.1, and 1.6.
If you have a custom android deployment on the phone, then you may have problems... but don't come whining to me about how you Baked Snack build doesn't support Angry Bird!
"Android's not doing at all badly compared to Apple's iOS, is it?"
Google dumped Apple into 3rd place and is the top selling smartphone OS and it sales rate is accelerating at a tremendous rate.
These angry Apple fanboy in the media outbursts are all they can think of to deal with Google kicking their precious Apple's ass in the marketplace.
So, you've got to query for functionality, design to fallback in some cases for the features you work with/around, then design tests to make sure it works in the cases you design for. From that, you budget your time, allocate test machines/staff, and ballpark your costs.
Doesn't sound too unusual - the more features you implement, the more combined testing you have to do for edge cases.
It's just like with video cards and graphics programming - you design for a limited subset of possible cards, have code to query the cards capabilities, have fallback code for some cards, then test against a good range of cards. Blaming card manufacturers at large for their variety of design isn't productive - they're what makes the market you have the chance to code for.
Ryan Fenton
It's too late.
I wanted an Android phone but with Motorola's iPhone-like ambitions and HTC's If-rooted-Reload-default-OS feature, I'd rather go for a poorly guarded jail (iPhone) than a WW2 concentration camp.
I tell people that Android is a failed experiment that proves that Carriers' and Manufacturers' greed will kill any open source advantages that Android could have brought.
Obama's legacy: (N)othing (S)ecure (A)nywhere and (T)error (S)imulation (A)dministration
missing the point.
As I say in the original post (http://blog.tweetdeck.com/android-ecosystem), it's great that our app can run on so many different devices. It has been a bit more work supporting all the custom ROMs and hardware specs, but there are more difficult platforms to develop for.
One REALLY nice thing about developing for Android was that we could have a beta period that involved 36k users. Being able to distribute the APK outside the Market was a real blessing. It's much harder to test iPhone software before submitting it to Apple.
MSX.
That is all.
I just want to thank US Cellular. They sell one phone with naked android, and one phone with HTC Sense. Both are running the Android 2.1, which is almost up to date. (Only the Nexus one and some tablets have 2.2).
This is the key, I think: ship the Google code and only the google code, and ship an up to date OS.
Many devices are still running 1.6 and some 1.5. This is unacceptable. Blackberry is no better. They sell their OS upgrades as a feature with their phones. Not OK.
--Sam
This is completely a non-issue, the majority of people are on the main builds and you can specify in your program what firmware and hardware it requires so that it doesn't show up for people that can't run it. I'm not too worried about developing for the 3 people running Bub's AOSP Magic "Original" v 0.3.3. Fragmentation is a boogie-man and nothing more.
Was the above dictated in Redmond. One the one hand no-one is using Android, on the other the market is fragmenting ;) Alternatively, the more hardware sold the more revenue generated. After all the end-user can only use the obe handset at the same time and the developers er .. develop for the one Android version at a time. Why don't we see the same kind of faulty logic applied to the Microsoft universe? ©
TweetDeck for the iPhone crashes way too often (about once a day on averahge), and for that there are only a handful of different versions. So TweetDeck for Android must be real garbage.
Since when were dozens of hacked ROM's "different versions of Android?"
It is by my will alone my thoughts acquire motion; it is by the juice of the coffee bean that the thoughts acquire speed
So it means that you have a lower return on investment, given that your testing costs are higher.
Right - this should be a simple cost/benefit analysis.
"I want access to these additional six million customers and it's going to cost me an additional $4600 per year to test for them. Worth it or not?"
Sure, 'free' would be lovely, in some kind of dream world. But "I want to have these customers and I don't want to bother testing for them," just smacks of greed and/or stupidity. Perhaps the smart developers will seek to stand out by letting people know they've actually tested their software on the device the potential customer owns.
Is there some sort of contractual obligation that precludes the developers from saying, "sorry, we haven't tested our app on this $130 non-flashable off-brand 7-inch Android tablet that you got from the local bedding supply store on clearance?"
My God, it's Full of Source!
OUTSIDE_IP=$(dig +short my.ip @outsideip.net)
As a customer: Does Fragmentation mean that i actually have a choice what i buy?
Sounds like there needs to be a more Standardized version of Open-Source
Loading...
As a consumer of apps, why the fuck should you care what language the platform uses?
Anonymous troll posting 2girls1cup videos.
We are currently porting SoftMaker Office to Android, and we are not experiencing any extraordinary issues that weren't present when we developed for Windows Mobile. So there are different screen resolutions, different Android OS versions, phones and tablets and netbooks, but a well-designed application should be able to handle that.
SoftMaker Office for Windows|Linux|Android
In regards to the unending Android vs. iPhone debate, this story made me think of Eric S. Raymond's The Cathedral and the Bazaar. As a long time user and proponent of open systems I surprised myself when I realized that I while I'd rather my computers be bazaar, I prefer my phone to be a little more cathedral. I wonder how many others are comfortably embracing this dichotomy?
I am very happy that good languages like java and objective C have put C++ out of hype.
"BSD dissipated and basically died due to fragmentation"
"Linux, due to the GPL, seems to be treading a middle ground"
"the end user is exposed to a mish-mash of widget sets, file dialogs, printer configurations"
A user with a PC can add ram, change video cards, and upgrade CPU's to meet the requirements for a application. Users of phones locked into contracts are stuck with what they have until they can buy another phone. Also the performance levels between low end PC's and high end PC's are not as bad as with low end phones vs top model phones. Almost any app created on a PC is going to run because the hardware has the power to run a full OS plus many apps at the same time. Lots of room to work with. Low end phones that have just enough power to run the OS present problems for apps that demand more. The available features also present a problem. If something is in 2.2 but not in 2.0 the app isn't going to work. On a PC they all have the same abilies for the most part. On the OS end unless you design your app to only make use of a feature in vista or windows 7 and I can't think of anything that does it's going to work on XP too. Even if designed only for windows 7 HP, toshiba, Dell don't lock your PC from using a new OS. The customizations on android by cell companies also present a problem. PC makers don't replace the windows GUI for there own. A developer does not have to work with a custom Dell GUI or custom HP GUI. The machines that do have a custom GUI are specialized task machines that are not part of the picture like manufacturing tool machines. OS upgrades in the windows world are 3 years apart as well. It's easy to list a apple app as being for iPhone 3GS and iPhone 4 only. Or iOS 4 only. For android phones a developers best bet is to list serving like works on driod phones with android 2.2. Might work on others and might not. Even the most power phone is a small % of the power of a low end PC. Android is a fail and you can blame phone companies for it. And popularity has nothing to do with if a product is a win or fail. Windows is a fail to but is on 90% of PC's. Android sells well it's open which is a win but it's also a fail with fragmentation. Those that dismiss the issue saying it's not a problem are lying to themselves.
. . . is that the implementations are not completely vetted. This was a problem with Windows Mobile 5.x and 6.x. Some OEMs did not implement everything (e.g., DirectShow), and apps that used certain hardware such as the camera would unpredictably fail. It is one thing to have a bug in your app and quite another to have a bug in the platform your app depends upon. Until you determine for certain that it is not your fault, a.k.a. proving the negative, you catch all the flack. Good luck with that.
I don't think so. The main issue seems to be that of Android residing on multiple dissimilar handsets, the OS changes this necessitates, and the programming challenges to support same. Of course that's going to be tougher to program for than a closed single hardware platform. The upside is that an application that runs on a majority of Android handsets is more likely to be purchased on a majority of Android handsets.
My Android handset has a larger than average screen resolution, and a few widgets don't play nice with it. I'd rather have the hardware choice and deal with the small incompatibilities than have one company tell me to take their phone and love it.
Oliver's law of assumed responsibility: If you're seen fixing it, you will be blamed for breaking it.
It's google's fault for not forcing handset makers to adhere to a set of guidelines or they cant call it android, droid, etc...
Google should have forced : handsets can be upgraded to the latest android version. Add on apps CAN NOT be required and must be able to be removed by the user. standard Android apps MUST NOT BE REMOVED.
google dropped the ball and now you have handset and tablet makers doing half assed jobs of it. they are utterly ruining the platform.
Is this what happens when the shock sets in that there's no Steve to guide everything? Tweetdeck devs: If this kitchen's too hot, you may be excused. More room for developers who can handle it.
From a purely functional perspective, this makes for better quality software in the end. More versions mean more unforeseen situations mean more testing mean in the end more bugs found and quashed.
Many of the highly modded posts right now seem to be missing some key information about exactly how Android is fragmented. It's not just the hardware - that can usually, but not always, be worked around in the ways they suggest. But it's also the software - every carrier and handset manufacturer likes to put their own little spin on the underlying software, and this causes more problems than one might expect.
You get scenarios where some functionality is partially implemented or simply broken on some devices but not others, so you can't rely on simply querying to see if that functionality is available. The OS will happily tell you it's working, but it won't, so you have to find ways to work around it and/or implement long lists of special cases in the code. On some devices, the way that some input elements are displayed will have forced styling that's inconsistent with the rest of the platform, which you won't learn about until you've actually tried it on that device and seen your layout get destroyed. The autocomplete functionality or keyboard input method can vary substantially from device to device, potentially impacting how one's UI flows work. The list goes on.
Limiting supported major OS versions and querying for hardware only solves part of the fragmentation problem. The fact that most every device has its own little fork of Android is more what causes the QA challenge. Since - generally speaking - one doesn't have these kinds of problems for mainstream desktop OS's, that's why people keep bringing up fragmentation of the Android platform as a major sticking point.
That green slime had it coming.
with MyFi?
You jailbreak, unlock, and do what you want. It stays jailbroken. I'm not saying that the Evo's not a nice phone (it's hella tempting from where I sit), but for all the handwringing about how the iPhone is a jail and Android is freedom, it certainly sounds as the differences are much more ideological than practical.
STOP . AMERICA . NOW
Google hasn't exactly done the best job of trying to coordinate things. Google can Open Source the platform, but do like Sun did with Java - anyone can implement Java, but you can't *call* it "Java", unless you passed a conformance test that Sun had. Google should have tried something similar to Android - make it so people can't market their phone as running "Android", unless they conformed to a certain definition of what Android is.
It's too late for that now, of course, but for future releases of the OS, they could do something similar - e.g "Android 3.0". I know these different phone manufacturer's think they MUST modify the OS so they can have "Product Diferentiation", but that's going to bite them all in the ass when some apps will only work on some Android phones and not others. If that starts to become too much of a problem, it might frustrate users and lead to the platform being abandoned by a lot of customers.
As a potential customer for an Android smartphone, I have to admit that the one thing that is holding me off buy an expensive (and thus likely more profitable for its manufacturer) phone is the fragmentation issue with Android. This is a very real problem that is the source of many if not most of the problems with Windows. A fragmented platform is one that is more costly to test on. Pure and simple. I don't want to buy a $400 phone today and discover a year from now that I can't run an app that my phone should support hardware-wise, but simply doesn't work because that phone no longer supported by its developer. This is a problem that Google has to address very soon. And, no they haven't adequately addressed it yet, even though Android is selling so well.
While I don't like the "uniformity" of iPhone, testing is going to be cheaper and thus more likely to occur on that platform as opposed to Android.
Sure, there's lots of versions of Android out there. But how many of those really matter? No, not in the sense of market share or anything, but in the technical sense of you have to worry about them in the code.
I run into this programming for Unix. Sure, there's probably hundreds of versions of Unix out there, hundreds of thousands if you count variations in installed software. But in large part I can ignore them. The major question is usually "SysV or BSD?", that is are the system's APIs based on BSD's or System V's. Some libraries I care about version but I often only care about large swathes of versions, eg. I care whether OpenSSL is 0.9.7 vs. 0.9.8 but I don't care about 0.9.8e vs. 0.9.8n (other than that 8e has bugs that're fixed in 8n, but that won't usually affect my code). And of course different hardware has different screen resolutions, but then I shouldn't be hard-coding for exact screen resolution anyway. Make the relevant calls to find out the screen size and just adapt to it, and you'll usually find you have a few general sizes you need to handle and a plethora of one real close to one of those general sizes that you can just handle automatically. Eg. a 328-pixel width probably can use the same layout, icon sizes etc. as a 320-pixel width, just make the main area 8 pixels wider or add a pixel to each side of padding and border spaces to make up the 8 pixels.
You don't handle driving a car by learning how to drive a Ford Focus, and then learning how to drive a Ford Fusion, and then learning how to drive a Chevy Cobalt, and then learning how to drive a Toyota Camry, and so on, and then when faced with a Hyundai Sonata you have to sit there and wait for someone to teach you how to drive one because you haven't driven one before. You learn how to drive a car, and you apply that general method to the particular kind of car you're in at the moment. The controls may be a bit different on each make and model, but the truly basic ones boil down to "Manual or automatic?". Beyond that, things like the headlight switch, turn signals, wipers, radio and all the rest are usually a matter of a couple minutes to sort out. If someone complained that there's thousands of makes, models and years of car out there and it's so much work learning to drive all of them, you'd laugh at them I'm sure. Computer systems are the same way: you don't learn every variant individually unless you're just starting out, you learn different kinds of systems and how to categorize any particular system by what kind it is in a particular area.
Only if that application runs well. Unless you take the time to verify this, be prepared for a bunch of reviews saying, "Doesn't work properly/Doesn't look right on phone X." And a bunch of refunds.
Oh yes, manageable low quality standards and usability. Count me in. I can't wait until the viruses and hacksploitations start in earnest from organized crime and data hackers. I wouldn't want to have a banking application on any Android device then. For a toy that is highly modifiable and useful in the tech-geek capacity Android based phones and devices are great. For the average citizen who wants a useful phone to streamline their daily activities and errands, expects their data to be secure, and the device to be in an always usable state they should stay away in the long run.
The greater the adoption rate the greater the implosion is going to be when people find out how insecure this system is.
Amen to that. Coding & debugging C++ is like playing catch with a wet spiky squid.
Remember to maintain your supply of
http://android-developers.blogspot.com/2010/10/five-steps-to-future-hardware-happiness.html
the android SDK deal with this very well. Quote:"To make life easier every API includes a FEATURE_* constant. To control your app’s availability on the Android Market, you specify the features required for your app to work. I’d like to encourage you to add manifest Feature nodes for every API you use, specifying them as optional, or not, as appropriate using a manifest uses-feature nodes as shown below:"
I don't know a single other evolving platform that deals as well with these issues as android.
Hajo Monogamy: Belief so strong that millions of people end perfectly good relationships in order to start a new one.
Sure, there are "thousands of Android apps working without problems" -- but that doesn't mean it was easy for everyone to get them there.
Just last week, I did updates to the apps I use on my Android phone, and I think it found 4. Of those, 2 had "reviews" of 1 star, warning people not to download them because they caused massive crashes and issues. (I believe one was the "Trivial Droid" app, which supposedly was crashing so bad for some people on the latest update, they had to pull their batteries out of their phones to get them to reset.)
I forget the other that had issues, but the author commented about how the update was yet another bug-fix to address incompatibility problems, and expressed his frustration that it was such a challenge to develop for the platform.
Honestly, I'd say the Windows analogy helps argue the opposite of the point you're trying to make with it, too! How many hassles did people have getting older apps written for Windows '95/'98/ME working properly under newer versions of Windows? How many things that worked in XP had no support at all under Vista or 7? How often did Windows suffer from crashes due to incompatibility issues related to some specific hardware component that was never tested against?
Apple's iPhone is always going to be the easier product to quality test against, because nobody but Apple is making the phones -- so you have a complete, exhaustive list of the possible configurations readily at hand, and it numbers FAR less than all the variations of devices running Android OS.
Throwing all the blame at "shitty programmers" is a cop-out. There will always be some developers with less skill than others ... but that should be equally true across all platforms possible to program for. Although it's been a LONG time since I did any coding and I don't claim to know all the details of coding for today's "smartphones"? It's not difficult to see that there are a lot of software issues arising that seem to stem from unexpected differences in hardware between different handsets with Android. (For example, the Google Goggles app immediately crashes and exits on my Kyocera/Sanyo Zio as soon as it tries to activate the camera. Isn't that app developed by people at Google? Are you saying THEY are "shitty programmers" for letting something like this happen? Sounds to me like they're simply not anticipating something about the way the camera communicates with this particular phone.)
That's why demos and reviews are important. On any platform, even the Jesus phone, it's risky to buy any application without trying it first.
Oliver's law of assumed responsibility: If you're seen fixing it, you will be blamed for breaking it.
This is why WP7 looks interesting to me (as both user and developer)... best of both worlds. A variety of hardware and carriers, but no glaring incompatibilies and dozens of OS versions to test on. iOS is too narrow and rigid, and Android is too chaotic and all over the place. It'll be interesting to see how it plays out.
- Spryguy
There are three kinds of people in this world: those that can count and those that can't
I don't think so.
The 'success' of Android is good for everyone (several strong competitors in the smartphone OS market push development and innovation) but too many versions and handsets at this young age of Android make the future easy to predict: it will only get worse.
There is going to be a small industry built simply to provide testing for Android devices until either a) Android flavors congeal or b) developers start focusing on specific segments of the Android market.
I'd take C++ over java or objective C any day. =) Has nothing to do with the hype. Having programmed with all three: The Java language gets in the way, Objective C is very convoluted to do simple things like concatenate strings. I'm not saying C++ is perfect, nor am I saying that either Java or Objective C are bad. It's just harder for me to produce easily readable code with them, and I can do the same things with less code (most of the time) with C++.
Anyone who doesn't see this as a problem probably has never really had to deal with configuration management and Q/A issues in a production environment.
I have, and if I were an app developer, this info would scare the crap out of me. Keeping your product stable, repeatable, and traceable on a single platform is hard enough.
In the course of every project, it will become necessary to shoot the scientists and begin production.
After all, look at how many different combination of hardware you have on it, not to mention that you aren't even running in a VM as you do in Android. No one outside of mission critical solutions thinks about testing on everything it may run on, I do not know why some developers seem to think they have to have 300 Android handsets to test on. But then it seems they are primarily Apple developers that are getting into Android too so I'll chalk it up to still in the learning process (either that or they will eventually go broke/give up trying to do something they do not need too).
Further it's not like Apple is any better - try writing one app that runs on the iPod, iPhone, and the iPad, you can but for many apps it is a nightmare to do. Now you also have fragmentation there based on what the device can and can not support (many devices are not upgradable to iOS 4, are too slow to run apps, or do not even have the piece of hardware you need). Users have no way of knowing this without either reading reviews or trying it - on Android you tell it what you require and it handles that end of it. Indeed, of the different systems out there that have varied hardware (and Apple's iDevices certainly fit that bill) Android is one of the easiest to develop for. If you choose to do like some iPhone devs and only care about the one device you can do that on Android too - nothing stopping you, but that doesn't make it any less fragmented.
Frankly Apple and their hardcore development group are chasing shadows with this and wasting time. They are fighting against reality and, eventually, reality is going to win. It wouldn't be the first time Apple did it either - always easier to attack a straw man instead of the real thing, but especially true in markets attacking the straw man doesn't win in the long term. Apple would probably be in a much stronger position if they spent that energy on competing with something that actually exists instead of something they wished exists.
------- Sorry about the spelling, I suffer from two problems. Dyslexia makes it difficult to spell well, lazy makes it
Minecraft is written in Java.
Anonymous Dude who spends too much time punching trees.
Manageable Nightmare is the name of my Insane Clown Posse tribute band.
The entire point of Java on devices like Android ones is to "write once, run everywhere". It's impressive that Java works like that at all on even 100+ versions of the same basic Android OS, and presumably even more different kinds of HW. Does it work well?
It should. The best way to debug this would be for apps to develop to a reference Android simulator, then the open source Android OS gets patched to make the "golden master" run it properly. That would make a constant process of making Android support all the apps while it runs on all the different HW. Which is the OS' only job.
--
make install -not war
For most app development, I would be comfortable applying Pareto's Principle. I don't have any data, and unless I'm mistaken about how fractured the Android OS implementations are, then I imagine that 10% of my effort would work on 80% of the market. The rest of the market would be considered fringe and not worth a return. Caveat Emptor for those who bought those versions.
Finally, given time, there will be some certifications across vendors to assure compliance. It's messy, but that's the cost of freedom and access. It beats dictatorships and walled gardens.
And for testing, will we hear people bitching about how Android requires devs to spend a couple thousand dollars on hardware to get various phone models and sizes to test on? Or will we just expect consumers to be our QA department?
Whoohoo!!!! The Microsoft astroturfer strikes again!!!!
Parent has a point, not a troll.
Have you ever considered piracy? You'd make a wonderful Dread Pirate Roberts.
A user with a PC can add ram, change video cards, and upgrade CPU's to meet the requirements for a application. Users of phones locked into contracts are stuck with what they have until they can buy another phone. Also the performance levels between low end PC's and high end PC's are not as bad as with low end phones vs top model phones. Almost any app created on a PC is going to run because the hardware has the power to run a full OS plus many apps at the same time. Lots of room to work with. Low end phones that have just enough power to run the OS present problems for apps that demand more. The available features also present a problem. If something is in 2.2 but not in 2.0 the app isn't going to work. On a PC they all have the same abilities for the most part. On the OS end unless you design your app to only make use of a feature in vista or windows 7 and I can't think of anything that does it's going to work on XP too. Even if designed only for windows 7 HP, toshiba, Dell don't lock your PC from using a new OS. The customizations on android by cell companies also present a problem. PC makers don't replace the windows GUI for there own. A developer does not have to work with a custom Dell GUI or custom HP GUI. The machines that do have a custom GUI are specialized task machines that are not part of the picture like manufacturing tool machines. OS upgrades in the windows world are 3 years apart as well. It's easy to list a apple app as being for iPhone 3GS and iPhone 4 only. Or iOS 4 only. For android phones a developers best bet is to list app compatability like this, works on driod phones with android 2.2. Might work on others and might not. Even the most powerful phone is a small % of the power of a low end PC. Android is a fail and you can blame phone companies for it. And popularity has nothing to do with if a product is a win or fail. Windows is a fail to but is on 90% of PC's. Android sells well it's open which is a win but it's also a fail with fragmentation. Those that dismiss the issue saying it's not a problem are lying to themselves.
Might as well finish it off. The summary was just a quote of most of the article anyway.
"I know of a major company having a multimillion dollar project held up because of it," he said. "Project managers definitely prefer developing for iPhone over Android because there is less to worry about in final QA."
Android TweetDeck 1.0 is available from the Android Market and although development might have been challenging, the company said the open environment meant it could get its software to a wider variety of end users.
"We were really shocked to see the number of custom versions, crazy phones and general level of customisation of Android," the company said. "From our perspective, it's pretty cool to have our app work on such a wide variety of devices and Android OS variations."
'The tyrant will always find pretext for his tyranny.' - Aesop's Fables
Text input, such as Swype or a physical keyboard, are all handled through the IME interface, which should be stable across major releases of the OS.
How much screen space the IME takes up differs from device to device.
Hey all. I don't really see a problem with the fragmentation. I developed Cubes, a game that largely depends on device hardware and capabilities. I have over 36k active users, and the only real complaint I get is that it runs a little choppy on some of the underpowered models. The real trick is the same for PC: Don't code to specific hardware. Poll the system for capabilities. Implement logic for resizing/rearranging the UI. Android is not meant to be like iOS, where the hardware is strictly controlled. Android is successful because it can target hundreds of device profiles. Because of that, you have to write your apps a little smarter.
Will be its eventual undoing.
Say what you will about Apple's control over their mobile platforms, but control keeps things predicable for both developers and end users.
---- Booth was a patriot ----
you can get high-end phones like the Nexus or the Desire (still considerable cheaper than the iPhone4 - unlocked, unsubsidized price of course)
But how does a U.S. resident try and then buy an unlocked, unsubsidized phone? Cell phone stores in the United States seem to sort their displays first by carrier and then by manufacturer within that. And if I don't want another phone line, what Android device is the closest counterpart of the iPod touch? Apple's iPod touch can access the App Store, but Android PDAs such as those made by Archos can't access Android Market.
In the meantime, guess what most desktop software is still written in? Hype may be gone, but utility (which is far more important) is still there.
...stop supporting anything older than Eclair (2.1). Most of the Android phones that still run the OS version before Eclair are too weak hardware-wise to expect to be able to use the latest apps. Nearly all major Android phones that i know of have a version of froyo-based Cyanogenmod (2.2) ready for them. There aren't many reasons to keep supporting older Android OSs.
A couple of weeks ago we put together a poster of the first 100 Android devices (not user_agents) that we spotted browsing the mobile web. That gives a better impression of the impressive diversity of the platform. http://analytics.percentmobile.com/images/first_100.png Meanwhile we have already 125 devices. 20+ increase in 4 weeks.
I hope Android Market does not follow in the foot steps of Ovi Store.
With so many Nokia devices, ispite of having pretty good hardware, Ovi store is yet to become a success. I had a couple Nokia phones, often the software that was suppose to have worked did not. It was clear why that was, at some point, Mosh, a precursor to nokia actually asked you, did this software work for you?
If nokia couldn't tell what would work on one of their device, then what hopes do developers have.
Android will be in the same boat if Google does not take control of Android hardware. At least come up with Google Certified or something.
And the Microsoft astroturfer mod team as well!!!
So how is this different to developing games/apps for the desktop (or, hell, laptop, tablet, netbook variants thereof)
well with desktop you have to support multiple OSes (Windows, Mac OS X, Linux) multiple APIs and GUI toolkits (The eternal QT/KDE vs. GTK/GNOME flameware, the what's the latest iteration on Win32/COM/.NET/Xaml/etc the Microsoft decided to put forward).
with android,it's basically just one OS with a default UI tollkit. If an App doesn't make anything weird or otherwise abuse the API or hardware, it should be rather portable across a wide range of androids versions and hardware variant.
or every other phone OS other than iOS to date?.
speaking of app development on other OS, web-oriented OSes like Google ChromeOS or Palm WebOS, would probably even easier to make portable applications, as the GUI toolkit is basically just WebKit. So some problems (like variations of resolution and screensize) are even easier to handle.
"Sufficiently advanced satire is indistinguishable from reality." - [Tips: 1DrYakQDKCQ6y52z6QbnkxHXAocMZJE61o ]
I work for one of the big mobile phone manufacturers, and my job involves making sure that android runs fine on our hardware and that the inner frameworks of Android doesn't crash or behaves badly.
One of the problems is this; Android is, in many places, implemented like complete moronic shit, pure horror duct tape cope & paste spaghetti coding that defies every KISS and OAOO rule there is.
So Android has bugs, *loads* of them. There is a special stability/endurance test that many phone manufacturers runs to check their stability against competitors, rumor are that Google's nexus one
(Pure vanilla/open source android) lasts for 10 minutes or so, while a typical phone from some major brand lasts up to 500 hours.
The truth is - if you buy an Android phone from some major brand, the software is patched up like hell to be stable enough to meet the brands standards, and since all manufacturers may do
different fixes, it can lead to inconsistencies in the framework behavior between brands, which will be fragmentation and a pain in the ass for 3rd party developers.
Blame Google here - what Google should do to end the fragmentation of Android is to simply fix the bugs in their shitty code.
Developing cross-browser websites is probably a worse problem. The differences between the Droid and the Desire are piddling compared to those between IE and Firefox/Chrome/Safari/whatever, without even going into the problem of old versions of those browsers.
This article sounds like more FUD, probably from some Apple paid astroturf shill. I'm still a big fan of "Fragmentation? More like Fragmentawesome", an article from a developer with experience developing Android software and a decent sized userbase. If a freaking *game* works that well on a variety of Android devices without any tweaking whatsoever, I have to wonder how bad the programmers in the article are to have trouble with something as simple as twitter.
Nathan's blog
This pretty much sums up IT in general. And the life of an NFL head coach.
deleting the extra space after periods so i can stay relevant, yeah.
Coding for modern phones is fun. And what makes it fun is the integrated hardware within, but commercially it is horrible when you release an application and it fails to run on some major hardware/os platform. This happens when you can't test it. Somewhere else in this forum Windows was mentioned. This happens in Windows too, it happens in Symbian, it propably happens in different versions of iPhones, pods pads (don't know from experience), and it happens in Linux. Your statement about it being sign of success is true in away, but it is also threat for the whole platform.
SpryGuy is not an MS troll. I agree with him. I'm an iPhone user, but WP7 looks slick, and if they can add cut-and-paste and some other features, establish a good ecosystem (app store + simple, easy-to-use software interface for my computer), and prove themselves in the field over the next year or so, I may consider switching.
I'd very much like something between the locked-down iPhone (my loathing for iTunes is white-hot) and the evident anarchy of Android.
I understand that the wide-open, some-tweaking-may-be-required Android is exactly the kind of thing that hits the sweet spot of many Linux users/Slashdot readers. Fine, but that's not my cup of tea.
Click through to look at the pie chart in the blog post. You'll see that only six versions have enough share to even be visible in the chart. All the others combined add up to a sliver so tiny, you can barely even tell that anything's there. Most of those are obscure custom ROMs put out by the hacker community, and I doubt many developers are going to worry much about whether their apps run on them.
Not since 2001, but the last few years don't require re-installs or a 'version update'. Granted it's a pain to maintain, but it's possible to stick with one install for many years.
Sort of. I think the issue is that Android is very powerful, very good, and Google thinks making the OS was good enough. They need to step up and either:
1) Begin writing a LOT more apps themselves (either in-house or by contracting with serious full-time developers), and push them in the Android market in some special way. I'm not just talking about Google Maps or Goggles or anything, I mean a flashlight app, a fart app, advanced camera app, whatever. If they're going to put out the OS and make money off of this, they need to take the extra effort to create applications that just work, because to me, the quality of applications is the only place where iPhone still has a clear advantage.
2) Start being dicks about who can call a phone an Android phone, or fork the OS into dumphone and smartphone. The "Optimized for Windows XP" stickers were pretty much bullshit, but they DID have mandated minimum standards. You couldn't sell something with six-year old specs and say it'd run XP just fine. There are some Android phones out there that are just plain awful, and I can't imagine trying to load a website or write an email on them.
I'm less technical than most people on this site, but people writing software for computers don't care much about each person's screen resolution or monitor size. It seems that Google could be doing a lot more to allow similar ignorance (and I mean that word in the good way) among smartphone developers.
HI, MY NAME IS ISAAC.
I think it's fair to say open source is a great idea, freedom in coding, and the freedom creates some difficulty to standardize things, one of open source's difficulties. Eternal conflicts and icompatibilities among BSD versions, linux versions, packaging systems, command versions, libraries, standard directiories, all complicate developing open source apps. Its a tough challenge. Freedom to modify and fork, lack of centralized management and control, is pretty basic to open source. Perhaps big advances in open source could be made by making open source the front and center for the advancement of numerous open standards, for many more things, that multiple projects willingly adopt, such as metadata, file formats, libraries, etc. Worked for html. Common strategy in tech - make the standards yours.
Build your own energy sources from scratch. http://otherpower.com/
This is why Win 7 will actually do well. Microsoft is setting minimum hardware specs and somewhat controlling the basic experience. Developers will find this a much better alternative as long as the phones sell well. That is assuming the handsets sell well, and after seeing the initial reviews, believe they will.
Those still in denial that this is an issue have never developed software.
And it would be more capable were it written in Objective-C. Do you know that it doesn't have dynamic lighting, and that that's something that's holding up flaming arrows? Unless OpenGL in Java is more capable and that Notch has mostly just coded himself into a corner.
This isn't meant as a nock against Minecraft or Notch, or even really Java specifically, just that, all told, Objective-C provides significantly more potential than Java does. What's more important to me is that the game exists and is fun rather than how it would potentially be better if different choices were made.
How will we ever cope? I mean for the last 20+ years we've had these systems called IBM Compatibles. All of them have exactly the same amount of memory, the same amount of storage, the same speed CPU, the same speed GPU, the same size and number of displays, the same peripherals, run the same OS, the same networking stacks. It's been awesome because if they happened to all be different no one could ever ship software for them.
That sounds like Apple-placed FUD to me, or maybe they are trying to market Adobe Air as the "solution" to this "problem". Tweetdeck is written in Adobe Air; maybe that's the source of their problems. (And, frankly, I think Tweetdeck kind of sucks anyway. I deleted it from my iPad.)
I have several Android phones, from 1.6 to 2.2, all with different screen sizes, and most software just runs on all of them without problems. The Android programs I have written didn't require anything special to be done either.
Writing an Android app is relatively straightforward at a minimum pick a level of the API and code against it. The app's manifest file sets its minimum API level and also provides hints of what hardware it needs, what hardware is optional, what system resources are required etc. It's up to the marketplace / appslib software to ensure your app is only visible on devices that conforms with your app's requirements.
I am happy with the bazaar.
Some of us can live happily with our principles.
IANAL but write like a drunk one.
How is having multiple handsets any different from a desktop OS supporting multiple hardware configurations?
Multiple hardware configurations can actually be a boon for an OS. Look at the way the iPhone apps were all written for the original low-res screen and had to be scaled up for the new high resolution screen. Aside from not using the extra resolution many apps have their own custom designed interface rather than using standard widgets and fluid layouts.
It reminds me of the early days of AmigaOS before there was a standard widget library. Every program had to draw its own interface and there was a lot of inconsistency. Once V2 of the OS came along and there were a few different models apps quickly started behaving a lot better.
As long as the handset manufacturer makes some effort to provide good quality drivers then diverse hardware isn't a big problem for an OS.
const int one = 65536; (Silvermoon, Texture.cs)
SJW, n: "Someone I don't like, and by the way I'm a fuckwit" - AC
You mean like how all the PC manufacturers converged and now we only have the choice of one modem, one soundcard and one network card? How about the way the situation we had in 1995 with all of those companies making ethernet cards that were slightly different. Notice how the ones that were inconsistent with the protocol splintered the market? And look how people turned their back on the WWW in 2000, with all of those competing web pages. (OK, that one was a stretch).
The truth is that people want choice and they want cheap. The market is still new, but the natural course of things will drive it to defacto standards as the competition both drives the cost down and forces innovative developers to the top of the heap. Apple offers a consistent platform, but in the process of maintaining that consistency, they have to maintain a choke hold on innovation. If they can predict the market and what people will want, they can let up on the choke hold in just the right place at just the right time, and allow the things people really want on their platform. The Android market, OTOH, throws everything out there, and lets the market decide, just like the PC platform did after Compaq was able to force it completely open by reverse engineering the BIOS.
Aah, change is good. -- Rafiki
Yeah, but it ain't easy. -- Simba
This is a problem, and one of the things that risks ruining Android's "openness"
No, there isn't any problem. Android has fewer versions than any of its competitors. There are only two major versions, and most software runs on both.
Carriers cannot change the APIs or make the system incompatible or they lose access to the Android market. Carriers like to install their own home screen and add some of their apps, and that's fine, it doesn't affect compatibility.
Furthermore, most Android handsets allow you to install applications from outside Google's market, and there are even third party software markets that you can use, all of which are compatible.
This whole "100 version meme" is astroturfing by Apple, Microsoft, and Adobe.
So it means that you have a lower return on investment, given that your testing costs are higher.
If you want your testing costs to be low, just write generic, portable apps. It's the cheapest and easiest way of developing.
You need to do more than that only if you require really specialized features that not all handsets support. Of course, on Apple hardware, you often can't support that kind of software at all because *no* hardware supports what you need.
Furthermore, instead of worrying about each device, just make your app a little more configurable: let people change the buttons around, choose different themes and font sizes, etc.
Me: I want to renew my contract.
Mobile company: no worries, you get a new phone in your £20/month tariff. It includes Internet, hundreds of SMSs, hundreds of air time talk minutes.
Me: give me one of the many Android phones you have.
Mobile company: no worries.
Or a variation of that. Who is buying phones like you suggest?
IANAL but write like a drunk one.
You wake up, you are told what to do.
You go back to sleep.
Freedom in the other hand is riskier, it implies you are a questioining individual and that there is a risk that ytour choice would lead to undesirable outcomes.
What do you prefer?
(and if you think this is an exageration, remember that Apple just patented a method to censor SMS messages....)
IANAL but write like a drunk one.
A Flash (or some other) VM that runs on all flavors of android will solve this. If Jobs would allow Flash on the iphone/ipad then we could write once, and run on all mobile devices (RIM, Android, Apple, WebOS)
1) Apple - One trick pony. Single OS, single device. This is good for them, but not everyone can afford an iPhone sans contract outside the US and it remains a premium product.
2) Google - Make the OS only, letting manufacturers dick around with Android and resulting in the fragmentation mentioned in the article.
3) Microsoft - Same as Google, they've been making WinMobile for close to a decade but it's not popular.
Only RIM and Nokia have one OS to rule their stable of devices. Symbian and Meego allow Nokia to churn out multiple models at different price points with varying features, but developers need not worry about the underlying hardware. If they need a specific capability like GPS or an accelerometer, the app won't install on a phone that doesn't have it.
I guess this will elicit yawns from US readers, but consider that the 5800 Xpressmusic (a Symbian^1 device) has sold over 10 million so far worldwide.
"..One hosts to look them up, one DNS to find them, and in the darkness BIND them."
Why so aggressive? Nobody is 'making' you 'do' anything.
Your job, your paycheck, your money, your acquisition, your choice.
Life is great! (as told by Lady Susan)
Can you buy an unlocked iPhone and sim card for Verizon?
No. All iPhone units sold in the States are locked to AT&T, and Verizon not only uses a different incompatible protocol stack (CDMA2000 instead of GSM and UMTS) but programs the subscriber identity into the handset instead of using a removable CSIM card.
I live in Saigon, I picked up a Nexus in a small shop near my house.
To buy a Nexus One handset in the United States, you have to be a registered Android developer, and it's still $600.
try the HTC Desire
Google Product Search lists them for 550 USD, compared to less than half that for an iPod touch if I don't want a phone per se.