tags:

views:

147

answers:

4

Some of my application's users are on android 1.5, some on 1.6, and some 2.0.

So how do I release my app for all customers? If I release a 1.5 version, then the 1.5 phone can use it - but not the newer phones with smaller screens (aka Tatoo), they require 1.6 or higher? correct?

Thanks

+1  A: 

Newer phones should run your older apps fine, depending on how they are coded. If you're using AbsoluteLayout and hardcoding references to pixel dimensions, you will run into issues. If you're just letting android do the calculations for you, should be fine. The API is explicitly backwards-compatible, so phones that run 1.6 or 2.0 will be able to run 1.5 apps just fine.

Eric
I would respectfully disagree. I had to change my apps to make them compatible with the new phones, and in one case just could not do it. regards, Ari
BeMeCollective
Sorry, but you'll need to give details to make a claim like that. All older apps should run fine on new phones, unless you're using specifically deprecated features, of which there are few. AbsoluteLayout, as @Eric mentioned above, is one of them.
Klondike
+1  A: 

What I do is set my app to build against Android 1.6, then I set the minSdkVersion in the manifest to 3 (which tells the Market to let Android 1.5 phones install it, and the targetSdkVersion to 4 (which tells phones with Android 1.6 and up that I've already tested it on 1.6 and not to give it any forward-compatibility help). By building against 1.6, Eclipse won't let me use any 2.0 APIs, but I know that it will still work on 1.6 and 2.0. It also won't let you automagically install it on a 1.5 emulator, so I export a signed APK and then use the "adb" tool that comes with the SDK to install it on the emulator via the command line, and hand-test it to make sure it's not stepping on any 1.6-specific APIs either.

The reason I don't build against 1.5 is that there is stuff only in 1.6 and up that I need to use, that 1.5 will safely ignore, and that is support for multiple screen sizes. I can include larger assets meant for the Droid screen in res/drawable-hdpi and have Droids autoload those, but if I'm building against 1.5, Eclipse doesn't know what I'm trying to do.

I hope I didn't make that sound too complicated, because it actually isn't - the Android SDK and resource framework makes it surprisingly easy to handle multiple screen sizes and platform versions. Just understand what it is you're doing, and use screen-independent pixel units in your layout XML, and you'll be fine.

Klondike
A: 

I'm building with a target of 1.5 and testing it on a 1.5 emulator, 2.0 emulator, and a 2.0 device. This allows me to make sure it will work with as many different devices as possible.

UEC