Android developer on Slashdot detailing the Android "fragmentation"
news.slashdot.org
news.slashdot.org
Most apps i use have been running on my G1 from day 1 and now on Android 2.2 on the Nexus One and i've had no big problems between android 1.5, 1.6, 2.1 and 2.2.
I guess the only thing for games to remain relatively platform independent is to use another intermediate layer (to substitute for a not used android "layer") like the unity3d engine.
OpenGL itself exists to offer platform independence.
Second, when 2.2 was released most programs ran out of the box on 2.2, there where no app updates for a few days. Out of all the programs i have installed (there are quite a lot) only one had a minor graphic bug, that has been fixed now. Don't know what was causing this, though.
When you say "OpenGL is for platform independence" you are right. But if you look at all the versions, and _especially_ the vendor specific OpenGL extensions, you'll see that OpenGL is quite fragmented itself. Also, it doesn't abstract away screen sizes and such.
For example, camera support can differ greatly across SDK versions and hardware. Camera callbacks need to be implemented conditionally based on whether autofocus is available and selected. EXIF orientation data isn't reliably recorded on some devices, and the EXIF interface class isn't available in older SDK versions. Lastly, your application will crash if you attempt to take or preview a photo using unsupported dimensions, but the function to query the list of supported dimensions isn't available on older SDKs.
But the market was also much bigger. And software sold for higher prices.
Android market is too small and prices too low for the platform to be so fragmented.
My feeling is that it seems minor now; but it should be focused on. You can't let something like this slide for too long before you've got a piece of junk.
So the situation is definitely not Apple-to-Apple's. I really think you need to start thinking about Android in two generations. 1.x was all about getting competitive with the iPhone. From 2.x onwards I think we're going to see much more platform stability. Fewer OS releases and a higher emphasis on maintaining phone compatibility. We've already seen that in the first two releases of the 2.x series.
In their case it's more evil, though: They actually profit by ignoring older bugs, because they sell new versions of the OS to people who get sick of things not working. But as a game developer, we've had to still work around their bugs so as to support the people who haven't upgraded.
Story's the same here, except now it's not even an option for the consumer to upgrade (short of jailbreaking their phones in most cases).
It's no doubt true that most app developers will never run afoul of Apple, but every time Apple yanks an application that it had formerly approved it makes people wonder if it could happen to them.
edit: wait, _the_ Dieter Rams? I'm honoured.
I developed a very simple app (BenPaper); it runs fine on 1.5, all the way up to 2.2. It handles things like device rotation without me writing any code to deal with that because all the layouts are liquid etc. etc. Admittedly it's a very simple app, but on the whole I was impressed with the defragmentedness of the platform.
Compare that to writing a J2ME app, where you have to use a build tool like Polish to build 18 different binaries, run 6 different emulators on your development machine, keep an up to date list of devices and their hardware characteristics...
In other words, no.
(Which is why it's funny that the author of the post points to .NET without mentioning Flash in his article)
The problem with this approach is that performance goes down the toilet (which is exactly what you see with Flash on mobile devices now). So what Google's doing is offering developers and device manufacturers a chance to write to the device itself through OpenGL.
Everything has disadvantages, openness included. The author seems to want it both ways (open platform with Apple like hardware consistency)
I would just target my apps to 2.0+.
Target either 1.6 or 2.1 based on what APIs you need. 1.6 apps will work with all later releases just fine if you don't need a 2.1+ specific API.
These complaints scream out for a framework/engine builder to come in and provide a uniform interface to the graphical capabilities of the many different Android devices.
Nokia/Symbian has used total number of shipped devices as an argument for their platform, but every Symbian dev knows that it is totally meaningless number. For example targeting S60 2nd edition devices is out of question, but Nokia/Symbian is still calculating 2nd ed. devices in their numbers. I once blogged about this and mobile stats in general: http://dirtyaura.org/blog/2009/01/05/worldwide-mobile-intern...
Detailed info about fragmentation issues is really useful for me and I assume that other mobile devs & companies too for estimating when and how to develop to different platforms.
I feel the dev's complaint was more nuanced than complaining about fragmentation.
The dev was saying there were tons of easy back-ports left on the table that could make the fragmentation much easier for developers to deal with. I walked away feeling that some released Android versions were neglected, more than fragmented.
[edited last sentence to distinguish neglected versions from not caring about the whole platform, which Google obviously does.]
- Ensure raw Android devices are as pleasant to use as Sense and Rachel. This means stock updates will work on any phone, rather than having to wait for Handset manufacturers to port their UIs to new Android releases.
- Ensure that handset makers have updated their existing units before allowing them to provide 'Google experience' prorietary apps (Gmail etc) to them for new devices.
Or are you talking about XDADevelopers?
Andy Rubin stated that the release schedule is going to slow down soon to either 2 or 1 releases per year. At the moment, the platform is immature and they are focused on adding in features. I suspect it will all become a lot more stabilised shortly.
One of the things Apple has done brilliantly is to make updating painless.
"iPhone OS 4 will work with iPhone 3G, iPhone 3GS, and the second- and third-generation iPod touch this summer, and with iPad in the fall. Not all features are compatible with all devices."
Also, if the new iPhone does have a higher-rez screen, there is going to be even more fragmentation.
Not that this is awful or the end of the world, but Apple isn't magically exempt from these things.
That is, I fully expect that my iPhone 3G will not run iPhone OS 5 and that the iPhone 3GS will not run iPhone OS 6 (or whatever number they're up to in two years). It's still a solid story for iPhone OS development compared to other handsets.
It appears to be one of the lessons that Apple took to heart from the PalmOS example (they were at 160x160 for years, then 320x320 and only a few folks took it beyond that).
While individual phones may ship with the old version all the Verizon Android phones I'm aware of have the ability to be updated to 2.1 in a carrier supported way.
I'm genuinely surprised, though, that the Eris has been updated.
That's a good thing, if you can count on most (many?) handsets being upgraded to 2.2. That's unlikely, though.
I'm not seeing the problem here...
So do I recode my FFTs in Java and say goodbye to anyone running pre-2.2 until the carriers/handset makers get around to upgrading everyone in a couple of years time, or do I keep my code in it's little C++ NDK ghetto, safe from testing and rapid enhancements that Java would bring?
It's so frustrating that Google has fixed this problem NOW, but between carrier indifference and custom-'enhancement' inertia at handset makers, it's going to take forever for 2.2 to be a legitimate development target. This is a solved problem in iPhone-land.
I have news for you, in iPhone-land the phones in a couple years will be faster too. :)
I suppose it means apps might start doing that much more, thus performing so bad on old devices that they become unusable.
You'll have to code workarounds for it for years.
At least in the US, the carriers' subscription and hardware subsidy model will guarantee steady turnover in smartphones.
There is nothing preventing people from abandoning Android 1.5. Contracts run up and people are thrown fancy new phones for free. Nobody has built mission-critical business apps around Android 1.5, as some big businesses have ActiveX/IE6.
Android 1.5 will simply be discarded. It's already closer to that than IE6 is!
http://wiki.developers.facebook.com/index.php/Facebook_iPhone_SDK
http://code.google.com/p/gdata-objectivec-client/
http://github.com/facebook/three20
http://code.google.com/p/touchcode/
http://code.google.com/p/oolongengine/
http://code.google.com/p/cocos2d-iphone/As for the question of interpreters, I though for the current generation of apps, the issue was with 3rd party interpreters that allow the interpretation of arbitrary code. Code that is embedded in the app at approval time isn't an issue. Isn't this why frotz can only run games that are bundled with the interpreter when it is distributed through the store.
Not that I approve of apple's stance on "original language" but I understand where they're coming from,