I have a very popular Apple iPhone app and wish to port to another mobile platform. What is best the Palm Pre or Google Android? The Android has more popularity with manufacturers but I worry about installation issues and incompatibilities. The Pre has one carrier and one mfr but I worry its sales will be too low.
My app uses an SQLite database and is content rich and over 200MB.
You did not mention if your app was paid or free, and whether it included ads or not. The story is clear regarding both of those on Android. You can not yet sell Pre applications, and we don't even know how Palm is going to handle paid applications. I am also not aware of advertising solutions for Pre.
As for the number of users, Android beats Pre hands down currently. And being the more open platform, I have no doubt in Android enjoying faster growth as well.
Android has the ability to be written in Java a generic enough way that your J2ME ports which can then run on Sonys, Blackberries, Nokias and Samsungs should be a short hop away if you desired. However a lot more detail of what you application did would be necessary as it might be something that is very achievable in a short time frame on the Palm
Which may sway you decision as to Android and Pre thats probably a coin flip decision
You might want to add BlackBerry to your considerations.
When combining all of the RIM models available, the total number of units sold beats the total units sold for Pre and Android devices combined.
Plus they have their App World service up and running now for selling your app through.
Jim
Ahhh, the great debate. Likely to start a holy war. It seems to me that there is a bigger buzz about the Pre than the Android. On the other hand, Palm has failed at this once before, and I have a hard time counting Google out.
I think I'm in the Pre camp. Get in early. Risk versus reward.
Couple of points to port your iphone application on Android and Pre devices
Android: recently they come out with native support, so it should not be too hard to port cpp code to android paltform using JNI
Palm Pre: As if now, development is purely supporting using Java script, and i am afraid you will have to re-write your app to support Pre.
My obvious choice will be go with Android first, this platform is supported by many OEMs and many carriers worldwide while Pre is limited to one carrier and with only one device at the moment in the market. Android definitely has much better market penetration than Pre
I'd definitely go with Android. The palm pre is making progress, but is still rare as far as smartphones go. If your app caters to a niche market in any way, you're likely to find the market is just too small.
Just one thing to remember with Android, though -- you can't make a 200MB app. The phones only allow apps to be stored in onboard memory, which is usually about 512MB with the OS taking 300MB. 200MB is the entire storage space for all apps on the phone. Android phones come with SD cards where data, but not applications, can be stored. You'll probably need to allow users to download your app's database to their SD card after they've installed a smaller, data-less application.
I'd go for Android too, (ok we now have a clearer vision compared to when the question was first asked ;) )
It's just there, everywhere now, so it can't be ignored. Plus i'm more of a Java developer ;).
Actually my concern is the opposite of yours: I'm an Android developer, and I port my apps to the iPhone. I used to do it by hand, but I found this product called ,iSpectrum ( http://www.flexycore.com ). There a video showing an Android 3D app ported to iPhone in 2 days only. This may be interesting a choice tool for you (if you decided to choose Android against Palm...)
I'm answering my own question because its been so long since I asked that a lot has changed. Primarily I went ahead and ported to the Android thanks to some very good answers here and my intuition that Palm was not stable enough as a company. And in hindsight that was the perfect move...Palm almost went out of business having been snapped up at the last minute by HP...and Android rocketed to be more popular than the iPhone. And our product, iBird Explorer, ended up becoming one of the most profitable ports we have ever done. Its also one of the best selling apps in the reference category of the Marketplace. Especially from a grossing income point of view.
Related
I am a C Sharp.NET & Silverlight developer and now thinking to swicth to SmartDevice development specially for iPhone & Andriod based phones. I have looked over web and found some cross platform development frameworks like
http://developer.openplug.com
http://www.phonegap.com/
http://android.xamarin.com/Welcome
but not sure about which to choose. Naturally I would like to keep my learning curve less but also would like to choose platform which provides more power, so I am looking for your suggestions and 'Getting Started' tips and also which device you think will be in demand in future iPhone or Android ? .
Thanks,
Maverick
I wouldn't recommend any of those. The problem is, that those "cross-platform" development frameworks, still aren't cross-compilable. This means you still need to develop an application for each platform, but you can reuse heavy calculations if you are using models af MVC.
Another thing is that those frameworks still aren't 100% native supported, so you'll loose some features from the native frameworks when developing applications.
I've read a lot of articles and to be honest, these cross-platforms seems to be dying out, cause both Android and iOS are moving very fast in each their direction and the cross-platforms cant keep up. But it's still up to you.
In would recommend you to choose one of those platform and learn it from scratch. With your C Sharp background, maybe iOS and Objective-C would be the most natural choice.
Enjoy
Edit: Regarding you last question:
I dont think it matters which one you choose, both will be domination for a long time. You should pick the one you can identify yourself with.
since you are C# dev, go for MonoTouch. I heard good things about it.
Miguel de Icaza is behind Xamrin. He wrote the most prolific .NET platform for UNIX, mono. I believe both he and his team have the capacity to bring you the most coverage for common features on Droid and iOS. My friend has a startup and is releasing an app shortly for iOS on Xamrin. It is a video streaming app.
HTML 5 will get you the most cross platform for the investment. Of course, like everyone else has said, if you need lots of native integration or if you want to use the latest APIs upon availability, you have to go native.
Although not really a programming question I believe many developers would have come across this and therefore give the best answer.
Currently I am developing an App for iPhone for the organisation I work for. Its close to release and there is heaps of interest when I present it but the occasional question comes up am I going to port it to Android. My answer is I would like to but according to web stats more than 90% of phones hitting our website are iPhones and the other 10% is declining (probably people migrating away from Blackberry, last count was 98% was iOS)
Now if you read the media many people would like you to believe that its a split market between Android and iPhone but this might be just in the U.S where the single carrier for the iPhone has limited its consumer uptake because all the information available to us (at least in my organisation) states otherwise.
I was curious to hear from other people who have looked into these stats both inside and outside the U.S because when I tell the person asking that there is no demand they dismiss it and say its growing, once again contradicting the stats available for our organisation.
I am really interested in Android dev so don't really want to hear that I should just make it to give people an alternative, it's hard to justify to management that I should spend their money to deliver content to 5% of our market. Currently it makes more sense to make a cut down web App rather than an Android App.
Be interested to hear your thoughts. Cheers
Honestly, I would argue it simply depends on your market. For instance, in my location Android users are increasing steadily. It still took us a long time to commit resources for development. Plain and simple, until recently, there wasn't enough return value to develop an Android app. If your Android market is only a small percentage of your market, then the resources would probably better be spent within your main competencies (i.e. for my company, developing more iPhone apps). It is easier to make a presence for a new app or upgrade in a market you are already established in. After creating the Android app, you would need to spend more resources on creating brand awareness, which if you already have a successful iPhone app, wouldn't be necessary if you simply created more iPhone apps. Also, let's be honest, the Android marketplace is a bit of a mess and hard to market on. Don't get me wrong, I have a healthy respect for Android and its capabilities, but unless you can see a return on the app, there is no point in developing it.
Depending on the type of application you are developing, it might be worthwhile to utilize a mobile framework that allows you to easily develop for both devices (plus many others). This is not the solution for all applications, such as those where speed is critical or games, but for many apps it might help. Have you looked at Appcelerator or PhoneGap? Just be careful to do plenty of research and make sure they support all of your requirements before jumping in.
It's difficult to answer your main question because the statistics related to mobile devices varies immensely, especially related to the type of application you are developing. Certain types of users prefer one type of phone and those users typically will use only certain features. For example, BlackBerry users are less likely to download games than iOS users.
For web apps
The approach suggested above is a nice approach because phonegap, appaccelerator or rhomobile do provide a sort of a virtual environment for applications developed in HTML, ruby. However, that might not be sufficient in a number of cases.
One of the approach i have seen developers adopt a lot for native apps
If you have developed your application using C code for the application state machine and lower levels then that code can be ported straight away to Android and be plugged into Android app using JNI technology.
The UI will have to be re-created.
What is the value to your organization of that 5% of customers being able to have a native Android app, versus the company's development time/resource cost?
Now that you've done all the app architecture and design work (including artwork, documentation, etc.) for the iPhone app, will a porting or rewrite for Java/JNI/Android take less development time by some multiple?
I think the most important factor is that if your company have the resources to maintain two version of the app. Would it be more beneficial to maintain native iOS app and a mobile version of the site? Since as you mentioned the usage of non-iOS devices of you website, as a metric lead a conclusion of such already.
As a matter of fact, if you have put most of the logic to the server back-end, writing an android app would not take anywhere longer than writing an iOS app, as long as you've programming experience in Java.
Also contrary to common beliefs, since the market share of Android phones are not as good in your place (would you mind telling us where your company is resided in?, it would in natural have less localized app in your geographical location. So creating an app specifically for them would gain more acceptance. That is fact, is a good thing. (see: Long Tail theory)
I've been developing applications for a long time now, but now I want to jump into Phone applications development. There are four main candidates:
Nokia's Symbian
Apple's iPhone
Google's Android
Microsoft Windows Mobile Phone
Can anyone suggest one, considering documentation, market, samples and availabilty of emulators, I'm not a millionaire so I can't buy it unless I know it would mean profits!
I don't have much preferences as for languages, but to stay within C# would be nice, however I've been thru Assembler for a long time, so it's hard to scare me :)
There are many factors to consider such as where the biggest market is, and so on. But ignoring those factors and thinking just about technical and money issues, the clear answer is start with Android.
The Android SDK is totally free. The iPhone dev tools need a Mac, so if you're not a Mac user, you need to buy a Mac. If you're not a Mac user, then it's probably a safe bet that you don't already know Objective C, which you'll need for iPhone. You don't even need a phone, there is an emulator that works wonderfully. It's very rare that I've made something that works in the emulator but doesn't work or works differently on a real phone. So the emulator is quite excellent.
Android programming is Java, and is very similar to C#.
Android development is much more approachable and easy for development (for getting started at least) than Objective C and iPhone.
There are many online resources available, but the book "Hello, Android" is actually very good. It's dated, though, goes back to version 1.5 of the SDK and we're at 2.2 today, but the fundamentals for getting started are pretty much the same.
You may decide to go another way, but in a handful of hours you can be writing your first Hello World program on Android free of charge. Even if you decide to start on another platform, you can hardly go wrong by giving Android a shot first.
Another thing that's worth noting is that Android is way easier to sell and distribute your apps than iPhone, making it a better place to start. There is no app approval process with the Android marketplace, so you can have your app posted for sure without wondering whether the powers that be will approve your first app for sale or to give away.
It bears mentioning that if you go the Microsoft route, your C# experience will transfer almost completely, and you'll be amazed at how close the compact SDK is to writing plain Windows apps. (At least, it was in 2007, the last time I wrote a Microsoft phone app.) But forget I brought this up-- if you want to be a serious phone developer for consumers, I recommend you forget about Microsoft at least for now.
If your plan is to create and market Paid apps, versus just free ones, don't forget to also consider and evaluate potential revenues and existing competition, instead of just your development cost of entry.
My local, and not necessarily statistically significant, sample shows a larger number of iPhone developers making more money than Android developers. The amount of money to be made, if you produce an app just near the top 10% of apps in many categories, may be well over enough to amortize the higher initial costs of a development system, certificates and testing with iOS devices.
However, for iPhone development, you may have to create a stand-out app, as many app niches in the App store are already filled with several dozens of apps. The absolute number of potential competing apps in the Android store is far lower in many areas. You will need to evaluate the competition in your area of expertise or interest.
First, you forgot RIM (Blackberry's OS). You will find this graph usefull to analyzie your audience (I think the graph is for the USA only): Source of the image
Microsoft Phone 7 will soon reach the market with new devices so it is hard to tell what market share they will take. Their IDE for Windows Phone 7 is free and it supports C#.
Can't say much about the other OSs other than the fact that iOS has the most extensive store and fanatic fans that are willing to buy those apps- but that info is only from what I read on the net and see from friends around me.
You may find the beginning-phone-applications-development question helpful as well.
Windows Phone 7's API will be based on C#, but most of the other stuff about it is still speculation.
Android has the lowest cost of entry, essentially free - and will use Java (which is very similar to C#).
The iPhone has a higher cost of entry - you need to own a Mac (or somewhat less legally, a hacked together OSX install). Plus once you've devloped your app it costs $99 per year to become a registered developer, allowing you to put the app on actual phones, and sell through the App Store. You'll also need to learn Objective-C, which uses a syntax which is a little different to C# and Java.
On the flip side to this, the iPhone tools are very good, and the market is huge, there are also some good online free courses (including the videos of the Stanford course available on iTunes).
Don't know much about the Nokia toolset, and I wouldn't start developing for old-school Windows Mobile now - it's a dead-end.
Some thoughts:
If you have a mac then the choice is certainly the iPhone since all the development tools are free.
AFAIK the Android SDK is an Eclipse extension and can run on pretty much any environment, and is also free.
Mirosoft charges for its IDE, and probably has the smallest audience.
I am pretty sure you will find more community support for iPhone or Android development too.
There are also cross platform options, such as PhoneGap, which may be worth your consideration.
With all technical considerations being roughly equivelant, the most "profitable" platform would have to be the one with the largest untapped consumer base for the particular app(s) you intend to develop.
Two factors come into play which you can assess
Size and growth potential of the market. There are plenty of charts and opinion articles around on this to allow you to make an assessment. If you can't find them, just drop those 4 topics you listed into google alerts and watch the incoming articles to your mailbox for a while.
Saturation of the app marketplace, in particular in the markets your app addresses. Your own market research would be best at identifying this.
The only other consideration which may apply to specific types of apps would be if there is a fundamental feature your app requires of the platform, and whether respective platforms support it. For example you won't get far making a flash based player on iPhone.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I'd like to start developing for iPhone or Android in my spare time, as a chance to learn something new but also hoping make some extra income.
I'm not sure which is the best development for me to start developing on. I own an iPhone, but I don't have a Mac (which I would need to use the SDK), plus with the iPhone I believe there's an annual charge to develop for it.
As far as I understand Android, the SDK is free and can be used on Windows.
Professionally I develop using .net and C#, which sounds more similar to the Java based Android enviroment.
Another negative I perceive against iPhone is it has a much more crowded App Store, I would think apps get better exposure on Android?
Both can be good/bad for various reasons.
iPhone - good
Great SDK & get to use Xcode which rocks
Well documented online (many tutorials)
Large deployed base of devices
Well established app store
Get to learn Objective (I find it a fun language)
Most people tend to upgrade their iPhone OS so you can get away with only developing for the latest and greatest
iPhone - bad
Crowded app store, very hard to break through (the "gold mine" is a myth)
App Store apps need to be approved by Apple, with some often rejected for dubious reasons
Have to buy a Mac (not necessarily a bad thing)
Have to learn Objective C (can be a hassle)
Have to pay $99/year to publish apps
Can only multitask on iPhone 4.0+. Hardware restrictions will mean many devices will not be able to use this however
Android - good
No restrictions on apps that you can develop/publish
Wide deployment of devices and growing - set to overtake iPhone soon
Can multitask on Android
Get to code in Java which is widely known
Some of the SDK tools integration with Eclipse is nice (although still needs a bit more work)
Only have to pay $25 to publish apps (one off fee)
Can develop on any platform (Mac/Windows/Linux)
Great Android devices coming out this year - platform could really take off.
Nice XML way of laying out views. While not as flash-looking as the iPhone Interface Builder, it is very powerful.
Get to work in Eclipse (which some people think rocks)
Android - bad
Have to support wide variety of screen sizes and devices
Many people still using old versions of Android OS (1.5) so you'll probably have to support those if you want to reach that market
SDK is not as polished as iPhone SDK
Android Market is not as popular as iPhone App Store - hit apps will not make as much $$$
All in all, starting with whichever is fine in my opinion, especially as now Android is gaining ground. Given your background I'd say you should go for Android.
In my honest opinion - I see the recent changes in iPhone SDK a kick in the teeth. I'm an Adobe person and you would assume, an infinite number of developers begin building applications in CS5 would be great for you App Store? Apparently Apple do not agree.
However - if your looking for exposure, getting an App into the App Store will yield more results if you build a quality app. As the Android store hasn't got a footing yet (if they'll ever be one), all marketing is on your own head.
I recently defunct Apple as they force us developers to 'be them' and I don't agree with their ethos.
That said, having programmed for both, The Android is slightly tricker to get installed and took a very long time to sort itself out. Although the instructions are very good and the examples are well defined.
If you've got a mac, installing the iPhone SDK is a sinch and you ready to build apps. It does cost £50 for the developer connection and yes android is free. [Correction - this may cost a one of fee of $25]
If you are building an iPhone app thats heading for the wild, you will need the connection (this can take up to 3 weeks in my experience) so you can test it on your iPhone.
And you'll definitely need to purchase a Mac.
--
With Android, its java, and with the newest rendition, a very good API to work with. As an additional bonus its build upon Eclipse, so it'll take you seconds to understand whats going on.
--
As a final thought - being an Actionscript/JS developer, the transition to Java was a logical and simple step and (please don't shoot me if you don't agree) Objective C is a train wreck of two different language styles. I found it very very difficult.
but don't just take my word for it, definitely try them both, as I see Android emerging market just an ice berg right now, but Apples is established.
Two disadvantages of iPhone/iPad apps ecosystem are:
Apple test & accept apps before puts them into AppStore (this take time and acceptance depends on Apple current policy) -- Google seem not to care about that so much.
AppStore it's the only official place for iPhone apps -- on Android you can install apps from unsafe source (i.e. website or email attachment) -- so you can provide and charge for app in various ways.
You say you want to (a) learn something new and (b) make some extra income.
As far as (a) goes, your barriers to entry with Android are probably lower. You can develop on Windows, Linux, or Mac; the sdk is free, and there are no charges. Android development is usually done in Java, which is not that different to the c# you already know. So, I'd say get Reto Maier's book and give Android a try. At some point you'll need an Android phone, but you can get some way using the emulator. You won't have to buy a mac or pay for a developer licence.
Once you're familiar with developing for a mobile platform you'll have a better idea of what it takes to build apps that other people will want to use, and maybe even pay for. At that point you can evaluate the platforms from the point-of-view of (b) and decide which one to pursue. If you end-up buying a mac and paying for a development licence then at least you'll be making an informed decision. But get some experience first.
Like you, I'm a c# dev. I've done some Android development for my own amusement, and (for what its worth) my personal opinion is that its a superior platform in comparison to the iphone because it is more open (technologically and commercially). I believe Android will fairly soon either achieve partity with, or even overtake, the iphone.
Try Android, get some mobile experience, then decide.
MonoDroid for Android is in beta, which means you'll be able to write Android apps with C#. You can sign up for the beta here.
iPhones are getting more and more restrictive. Android is opening up. Android is also shipping more phones than iPhone. You decide.
take a look at this book , it's a good reference to decide the 3th way... HTML, javascript & CSS for iPhone and Android at same time, based on webkit, using jQTouch and
PhoneGap . You can see on the first chapter the pros and cons.
I would suggest getting your hands on the latest iPhone SDK and a Mac from a friend before taking the plunge unless the $600 minimum investment for a macmini(what I did in my case) doesn't bother you.
You could try installing GNUstep for Windows and messing with Objective-C without buying a Mac to check out the language but it's not the same without XCode and Interface Builder,SDK,etc.
The reason I say this is because I'm currently taking an iPhone class and just learning Objective-C is a lot larger learning curve than I thought it would be and eating up a lot more of my time than I cared for.
Unlike C# or Java you have to manually keep track of memory management which is really annoying and a hassle not to mention Cocoa Touch, which is sort of like .Net or Java classes for Objective-C; another big learning curve! Bottom line neglecting the fact that it is a mix of SmallTalk and C and looks horrible if you can get over that it is still hard and easy to crash your program.
Forget to hook up your outlooks correctly in Inteface Builder?
CRASH!
Forget to use an # for an NSSTring due to the loose type checking?
CRASH!
I'm just saying that you'd probably be more productive and actually get applications completed in your spare time going the Android more familiar Java language route vs the Apple route. Also, I'm not sure how big Android is on the whole MVC concept, but it's everywhere in the iPhone SDK since Cocoa uses the Model-View-Controller (MVC) design pattern throughout.
On the other hand, if you like a challenge or learning the Apple route is the way to go and if you are good you app will sell and you will make money. Like I said there is a ton to learn with the iPhone before you can even start thinking of selling the next killer app LOL.
p.s. Oh and unless you want to test something on actual hardware that doesn't work in the iPhone/iPad simulator or actually upload an app to the store you don't need to pay the $99 fee to develop.
If you're a C# developer, and you're looking to begin iOS development, then you owe it to yourself to read Josh Smith's iOS Programming for .NET Developers.
It's exactly what you're looking for.
I developed a flashcard program a while back for learning Japanese. I've been considering porting it to a cell-phone. What is a good target platfrom? I'm thinking about iPhone, HTC Touch HD (system software: Windows Mobile) or a Nokia (system software: Symbian). Since I know a bit of JavaME, something that runs that would also be cool.
Here's the most recent market share data. Have you considered building a web-based product consumable by all smartphones with decent web browsers? Sites like x.facebook.com are not OS-specific but are app-like enough to provide a good user experience. Building such a site and charging a subscription would be one approach to serve all markets.
Well the Apple store just celibrated its 1,000,000,000 download the other day, so I would say that the iPhone is the largest and easiest phone market to target. Also the Apple store makes it extremely easy to sell your application (they keep part of the revenue of course).
Perhaps you might like to ask which phone has the largest market share in Japan?
Also I understand Microsoft has plans to start an app store for Windows Mobile.
Since you know JavaME, take a look at developing for Android. It doesn't have a large market share, but at least you'll be able to leverage your existing skills.
You won't be able to find a common language and development environment that works on the majority of phone platforms. Once you select a platform, you're kind of committed to it unless you want to port your app to an entirely different language.
Nokia has started heavily pushing a mobile development platform based on Qt. Nokia sells a LOT more phones than Apple does.
Why write iPhone app #1,000,001 when you'd be lucky to get $500 for your investment?
There's a huge craze around iPhone apps... at this point it's totally unjustified from a developer point of view. (It's great for the users)
Qt is a really amazingly well done C++ platform (Nokia bought it, obviously :). I'm having a good time writing PC apps with it... I plan on buying a Nokia phone I can write Qt apps for soon. At that point, I'll be ditching my old iPhone (original unit, not 3G).
When the SDK came out, I thought the world of the iPhone. I even bought Apple stock. However, no Java & no Flash because Jobs is a control freak is just plain stupid. GPL incompatibility really hurts, too. I'm also not buying a Mac just to develop software for the thing.
A few weeks ago I was reading an article about a product called "rohmobile" that was a custom Ruby framework that run's on a micro ruby web server. It allows you to compile your application against all the popular mobile phones (Apple, Microsoft, Android, BlackBerry, Symbian). It seemed like a very cool idea and it's open source actively under development. The framework comes with a sync soltuion, so you can persist data to the local device using REST/SOAP. As I explored the product a bit more, the only thing that seemed like it would be a pain is the setup of the enviroment(s) needed to compile the code for the various device.... if you could make it past this, then you'd have a solution where you could support a bunch of difference devices with a single code base!
http://www.rhomobile.com/
** I've never programmed in Ruby but the syntax and the demo made it look really simple, since it's really just a local web page running on the micro web server installed on the device! The UI is HTML/CSS based. I think the product is still in Beta...
Just my 2cents~
Well I would start to find a system / programing language which is available for the top phones on the market.
I think a good go is python for that. Which makes it easy to use large portions of the same code on all of the phones which are going to be supported.
Then I would probably start with the iPhone, because I believe its userbase is still demanding for new toys :)
Creating a webapplication would be another way... but that would mean you need to be online. if you are not using flash or some other possibilities of persistent storage.
P.S.: I would not use javame :) .. I still don't like anything java at all