Wednesday 31 August 2011

Porting iOS (iPhone) Apps To Android And Blackberry

Golden Gekko is often asked to extend an iPhone app to other platforms such as Android, Blackberry, Symbian, HTML5, etc.

So, why would they come to us if they’ve already developed an app with someone else? Usually, for one of the following reasons:

a) Current developer lacks skills and experience for other platforms than iOS
b) Unhappy with the existing developer
c) Concerned about the complexity of other platforms due to fragmentation
d) Want a long term development partner that covers all platforms

What is porting?

“Porting is the process of adapting software so that an executable program can be created for a computing environment that is different from the one for which it was originally designed…” and “Software is portable when the cost of porting it to a new platform is less than the cost of writing it from scratch. The lower the cost of porting software, relative to its implementation cost, the more portable it is said to be.” (source: Wikipedia)

In reality there is no such thing as porting from iOS to Android or Blackberry. The development environments are completely different, which means that unless you’ve planned for cross-platform development from the beginning you will have to start from scratch for additional platforms and the cost of pure development will be similar or sometimes higher than the first platform.

So what is the point of this blog?

Even though there is no easy solution to porting, there are lots of tips and tricks that make the process smoother, the cost lower and the app more successful:

1. Adapt existing Use Cases, Wireframes and Designs to the new platform

Even though the code cannot be reused, the overall concept of the app, user journeys, information architecture, designs, etc can. However, you need to make sure that the app is customized for the special attributes of each platform in terms of underlying OS concepts, navigation, screen sizes/resolution, limitations, additional features, etc. If you already have good documentation of the app, we recommend analyzing the deltas and describing the differences compared to the original app, keeping it trackable, so that future changes in the original app will also result in similar changes to the other platforms.

2. Sharing resources such as Copy, language files, graphical assets and media

This is where a lot of long term headaches and savings can be made. By sharing resource files where possible, you only have to update the content once and then automatically propagate to the builds for each of the platforms. Often this involves a scripted conversion step, but setting this up early is of great value for long term savings.

3. Backend communication and integration

If the app communicates with one or multiple backends then the API requests should be the same across platforms. In some cases you should consider developing a middleware that sits between the backends and the apps to avoid having to make changes to multiple apps if there is a change on the backend.

4. Code structure

To make it easier to maintain the code across multiple platforms make sure that you use the same or similar variables, classes, etc as this will save a lot of time for developers to make updates. You might also be able to reuse data structures and algorithms.

5. Preparing for tablets and other devices

Finally it is important to continue to plan for future platforms and devices becoming available. When specifying the new app for Android or Blackberry then also make sure that you consider support for Android Tablets, alternative screen sizes, new Blackberry’s launching, etc. Tablets especially require a modification of graphics, as well as user journeys, to make best use of the extra screen space.

 If you have to reduce cost because of budget constraints you can:
a) Complement the existing app with an HTML5 mobile website - this doesn't replace having an app on the other appstores but is a good way of building a mobile presence across all devices
b) Use a cross platform web runtime solution such as Phonegap for Write Once Run On Multiple (WOROM) - this is always going to be a compromise compared to native apps but can be acceptable in certain cases

In conclusion "porting" or developing for multiple mobile OS is not an easy task but the effort, costs and timelines can be reduced and the result can be very rewarding, if planned and executed properly.

For more about porting to Android also read Techcrunch article "Porting iOS to Android pitfalls and perks"

For more information about how to develop and maintain applications across multiple OS contact us for a call or meeting.

No comments: