Android · Mobile Apps

iOS app to Android app conversion, what's the best service?

Julian Jennings-White Product(s) and/or Service(s)

January 1st, 2016

I have an iPhone/iPad game generating consistent revenue and want to add an Android version. What is the best service to accomplish this as cheaply and effectively as possible? I'm mostly using flat code - no fancy frameworks, no esoteric Apple libraries, mostly just straightforward Objective-C code and xibs. I want to make an Android version that functions across a variety of Android devices, and to do so with a minimum of time and money. My budget is as much (as little) time as it takes to get it done and maybe a thousand or two thousand dollars if there's substantial benefit, but ideally I'd prefer free. I'm a developer and can translate/build the Android app from scratch but a service will improve the process speed substantially. Some solutions I've evaluated: Apportable: looked perfect a year ago but looks like company is defunct and doesn't work anymore. Marmalade: looks very promising to-end solution but there's a login problem with the product and they didn't respond to my web form email a week ago; I don't want a corporate sales maze just to evaluate if I want to use it. MyAppConverter: perhaps a good starting point solution, but doesn't appear to be entirely different than building from scratch. What are your recommendations for the service to use? It's probably something I haven't seen yet! I'm not interested in something like Appcelerator where you write in web technologies and it does web -> iOS and web -> Android. I already have a highly optimized iOS app and am just looking to convert that to an Android version. Thank you! Julian

Stephen Williams CTO & cofounder at Change My Path

January 1st, 2016

Cordova is one of the most well known "captive browser + native hooks" app environment.  If you can express your app well as a web app, usually as an SPA (single page Javascript app), then it should work well.

Choosing your SPA library is a separate matter.  METEOR is well respected and they've always had a nice solution for front-end + back-end development starter kits.  React (from Facebook) and Angular (from Google) are two leading web Javascript libraries.  Polymer (from Google) which is the most prominent way to use "web components" (a new way of building web pages that is very powerful, clean, and much more modular, and is being adopted widely and leading to a stream of improvements to HTML & Javascript).  Although it is different, and still a little immature, we went with Polymer for a number of reasons.  To summarize, it will be much better in the long run.  However, putting a solution together with Polymer requires more depth than a well-assembled collection like Meteor.  We need the extra power and flexibility, most apps don't.

Ted Rogers

January 1st, 2016

I would highly recommend Xamarin.  It is a cross-platform tool that allows developers to create truly native applications that are programmed using C# and .NET.  This allows developers to share large chunks of code, primarily non-UI, between the apps on the different platforms.  You have complete access to "all" underlying functionality of the platforms.  Xamarin seems to be getting a lot of traction in the last year or so.

They also have as part of their platform something called Xamarin.Forms which allows you to share the UI components as well.

I write native apps on both iOS (objective-c) and Android (Java) but write cross-platform apps for numerous clients using Xamarin. 

It will not help with the questioners porting issue but if you are starting apps for iOS, Android, or Windows phone platforms, I would recommend giving Xamarin a look-see.

Stephen Thomas Connect with me to learn top notch development techniques from my new books.... Educating Professional Developers!

January 2nd, 2016

I have been a software engineer for over 25 years I would give you several things to think about. If you only have $2000 don't do it. There is no simple conversion tool that will convert an iOS app to an android app you can try it but you'll go down the path and slip in a rabbit hole. Next in 25 years I haven't seen one of these converter tools work well especially for the games which is the worst situation to try to use these type of tools.

Allison Rosenberg, Ph.D. Startup @posed2 Seeking Technical Co-Founder in People Analytics

January 1st, 2016

I am not an engineer/programmer, but I am addressing this very matter now (though in advance of building either Android or iOS, as I intend to release both nearly simultaneously).  I understand that METEOR is great for this situation, using -- importantly -- the CORDOVA library. 

I'm delighted to hear confirmation or not of this approach. 

Stephen Williams CTO & cofounder at Change My Path

January 1st, 2016

I wouldn't go the C# direction. Although it is hanging on in Unity and Xamarin, it's going to keep fading. My ordering of language interestingness would be Web/general: Javascript (everywhere, in various forms, especially TypeScript), Go (server, everywhere soon), Java (in various forms, fading a bit, but it will hang on for Android, some web, some desktop), C++ (server, hard core desktop best done via Qt, games). Specialty: Python, R, a few more. Fading: C#, PHP. Faded: Perl, VB, Pascal, and many more. C# is very close to Java, so from a language perspective, a lot is transferable, but in my experience the libraries are fairly different.

When developing a portable app, there are two main ways to go for most apps: a web app + native (in some sense) mobile apps or a web/mobile app (optionally wrapped into a native app using a captive browser view which might provide extra features/access). For the latter, Cordova/PhoneGap is likely better because it allows you to use Javascript everywhere, and possibly the same web components / libraries everywhere even for the UI (which has pros and cons). For the former, you could develop mobile apps using various methods from fully native (but single platform like Objective-C/C++/Swift or Android Java) or C# with Xamarin or Javascript but with native widget proxies (NativeScript, React Native). I can see some cases where you want to build real native apps on Android and iOS; the rest probably are best done using web tech that is portable to web browsers too. I see little advantage to Xamarin or NativeScript except for people who really want to use C# or Javascript respectively but want more native performance or look and feel.

Having written a lot of Android app code for difficult apps (all the hard parts of Sony's original Android eReading app, 3D mobile camera app, AR demo), using Java and NDK/C++ using JavaGlue (my project), I am highly skeptical that anything cross-platform will compete effectively with native code directly using the native API. But many apps, using only standard widgets & views, are simpler and it won't matter much, at least not at first.

Some related links:

Peter Johnston Businesses are composed of pixels, bytes & atoms. All 3 change constantly. I make that change +ve.

January 3rd, 2016

iOS is really falling behind in both presentation and usability and you will need to up your game for the Android platform.

Material design took the world by storm in 2014 and its cards format is both more logical and more visually appealing than iPhone apps. It has matured and new ideas like Polymer have moved it forward further. Firebase also means that the back end and front are not separate but integral to a unified app.

But there is a bigger change. Machine Learning is transforming everything it touches. It is making games much more intuitive and personal. It is learning from every person who plays how to present a better experience next time. Games without machine learning will soon look as old as Space Invaders does now.

Finally, the mobile web has grown up beyond apps into a true mobile experience, with accelerometers, microphone, compass and GPS built in to provide a stronger experience than apps. Linked with VR and/or augmented reality, there is a whole new experience round the corner. Apps are old hat.

By the time you have converted your old iOS game into an Android one, all of these changes will be eating your lunch. If you stand still in the mobile world, you are actually going backwards - fast.

Don't port - start again.
Create something simple using Android Studio as a holding pattern. Then get Android/Polymer/Firebase and Machine Learning experts in to make it special.

Brent Gaynor

January 3rd, 2016

Hi. I'm currently addressing this situation as well. I had my mobile service built using Dart & Polymer and need it ported to Android. My developer situation has been too slow and would love someone to take over the developments. I get numerous requests for Android to a host of partnership/co-founde r options. 



Jeff Fitzmyers Project Manager at Energy Remodeling Inc.

January 1st, 2016

Perhaps consider Toptal. Their blog alone is pretty awesome! It might have your answer for free. They cost about $50/hr, but it's free to talk with them and begin a process that might end up being very short. I have no affiliation.

Stephen Williams CTO & cofounder at Change My Path

January 1st, 2016

There are a few ways to build apps that are cross platform, either using embedded HTML or similarly Javascript but using native widgets or a few other frameworks.  Those are potentially nice for simple apps, but also can be problematic if you bump into their limitations or performance issues.

I'm not aware of any real Objective-C -> Android or Android Java -> iOS converters that work effectively.  The details are too different, even though semantically similar.  There are a few ways to use those languages on the other platform, but those that I've looked at don't duplicate the API, so it isn't really helpful for porting unless you have a lot of application logic that is independent from UI, database, filesystem, etc.

You are likely to be better off writing a new version of the app from scratch.  You'll have to decide between native and something portable that could become the new cross-platform version of your app.

Joanan Hernandez CEO & Founder at Mollejuo

January 2nd, 2016

Hello Julian,

There has been some relevant comments already.

It all depends on the complexity of your game. That said, all those tools that help you translate, you'll spend more time tuning the code after the conversion (in case that's even possible) than rebuilding in from scratch in Android.

Xamarin has turn popular. If you chose that path, it has to be chosen for both platforms. Meaning, you'll use Xamarin from now on for iOS and Android versions. If you plan to keep native on iOS but using Xamarin for Android, then there's no point on using Xamarin (or any other cross development IDE) at all. Keep in mind that many of the cross development IDE available are web based, where are your code is native one.

So, unless you plan to learn and use C#, the Xamarin way is a long one.

I would recommend that since you started iOS native, keep that path. Also, keep the native path for Android, as it is the one that assures you more compatibility. It is not that other platforms fail at compatibility, is that it makes them longer to reach that point.

Anyhow, with the budget you mentioned, we might be able to do it. Contact us if you like to discuss further.

Good luck!