Experience of Porting iOS app for Android
I’ve been developing iOS applications since 2010. The success started to come since 2011. So it is almost 5 years passed and some of our apps are very popular in Apple App Store. In this time we learned different kinds of experience. As a software developer specially mobile app developer life is not that kind of easy. You always have to learn new features, new things during your day job. And it would be more difficult if you have to work on multi platform specially iOS, Android etc. Without a team it’s really hard to make good app in both platform.
Now a days, you can’t rely on only one platform. If you develop a good app for iOS you should also port it for android if possible. Because there are vast number of users are using Android phones. Though for small team like us its not always easy. So recently we thought to port one of our iOS game for Android and to see the difficulties, API and market. So here I’ll share my experience of this porting.
In February, 2014, we decided to develop minesweeper game for iOS. There are thousands of minesweeper in both platform, but I want to build something for my own, as I used to play minesweeper during my student life. I also thinking for few days to develop the same app for Android platform also. So we released Minesweeper Game for iOS in 31 March, 2014. At the same time we were also working to port the same game for Android and we released the Minesweeper Android in 27 April, 2014.
This is our first Android app, so during porting this app we learned many things. Basically the game interface is developed by our Android expert team, but I personally implemented some more features like scoring handing, Google play game service integration, advertise management etc.
I personally don’t like Eclipse IDE as its very slow for me. Also the emulators are slow. So I decided to develop this app using Android Studio. I was also looking for some very fast emulators, as I personally don’t have any android phones and in market there are many kinds of devices. Fortunately by googling I found Genymotion software, where there have many different kinds of Android device emulators. And Genymotion is very fast.
We normally follow the MVC pattern during development of our iOS project. So I copied the model, scoring handling class to Android Studio, and changed the syntax. Here I’ve attached part of my model class that handle scoring things. The first screenshot showing the code written in Obj-C and the 2nd screenshot is showing the same code converted to Java for Android.
As I was new to Android, so most of the time I have to search in Google the similar API of iOS for Android. And luckily 99% time I got my answer in stackoverflow. So this was a good journey.
The difficulties I faced in Android:
- Configuring Android Studio first time (specially the Gradle things)
- Working on UI, the XML based things, layout kinds of challenging.
- Same UI sometimes shows a bit different in different devices
Java was not difficult to learn. Personally I know Java language as in my Computer Science course. Also I developed some J2ME based applications in my student life.
- Still I think XCode is the best IDE compare to Android Studio or Eclipse
- UI design for IOS app is easier than Android (may be only for me)
- Support all kinds of devices in Android is very challenging than Apple devices for iOS
We thought to port new app specially game for both platform and its really expensive and time consuming to develop native code for both platform. So we are thinking to use something different in next project. But I’m not sure what should I select. I used Cocos2D for iOS in some of my iOS games. So moving to Cocos2d-X is an option. But for me, configuration looks difficult. I’m thinking to learn Unity3d 2D as it looks more promising to me. Also Unity3d has a very big community support and the engine and studio is very popular compare to other game development studio.
At the end, I enjoy 2D game development.