If you're reading this, you probably have an iOS or Android app that you're thinking about porting to another platform. Whether you're looking for a developer or just researching the topic, we hope this article will help you find the answers you're looking for.
How to port an app
There are four things you need to consider when porting an iOS app to Android or porting an Android app to iOS: requirements gathering, development, design, and testing.
Gathering requirements is the fastest part of the process of porting to a new OS. Our clients don’t need to worry about preparing long specifications, making tons of Skype calls, and spending weeks writing emails. Since there is already an existing application, we can use it as a guide when developing for the second OS.
Porting an Android app to iOS is not about translating Android code to iOS code. Whether you want to port an iPhone app to Android or the other way round, this process is actually about developing a product from scratch.
Developing an app for a specific platform requires knowledge of platform-specific particularities. Porting an iOS app to Android (or vice versa) cannot be done by merely replicating code in a different language. When we design an app for multiple platforms we have to deal with different hardware configurations, operating system support, and customization.
1) Hardware Configurations.
Even though iOS devices are produced exclusively by Apple, there are still many different types of iPhones and iPads. Android devices are shipped by a large number of manufacturers. For a developer, this means that hardware configurations including screen resolution, layout, processor architecture, memory capacity, fingerprint readers, buttons, and more will vary among devices.
When we develop an iOS app, we usually make it compatible with the current and the previous versions of the iPhone (e.g. iPhone 5, 6, and 6S). When it comes to Android, we choose the most popular devices including those that our client prefers and those that are popular in a given market.
Selecting the right hardware is crucial for app development. Mobile apps normally use a device’s firmware provided by the manufacturer. Basic apps - such as camera, widgets, gallery, and contact book - rely on underlying firmware that can vary by manufacturer. In other words, the way this functionality is implemented under the hood is not always the same. Android manufacturers can customize the look and feel of their firmware, which produces a large segmentation in the area of GUI design and may lead to usability issues. For example, different producers of Android devices work differently with the Exchangeable image file format. This is the reason why certain cameras invert photos. We can fix this problem and test photo capturing functionality on a large number of Android devices.
To make an app look nice on any device we also need to work with different sizes, fonts, margins, and screen resolutions. We may apply adaptive UI or even alternative UI if the layout has certain limitations. For example, a custom font in the action-bar in one of our apps didn’t show up on LG smartphones and even caused crashes. We used a standard font for this particular device.
On another project, the lack of space on the screen of iPhone 4 forced us to hide images in the posts and only use text, while in iPhone 5S and 5C we were able to show both text and images.
On average, we work on about 30 Android and 50 iOS app development projects per year. We know these platforms' operating systems literally inside and out. Our depth of experience helps us foresee possible hardware issues that affect an app’s functionality and fix them before the app lands on a user’s screen.
Read more: Diversification of iOS and Android platforms
2) Support for OS.
iOS devices receive regular updates from Apple. The update cycle for Android devices varies widely. Other than with Nexus devices, it takes some time for device manufacturers to upgrade to the latest version of Android.
We typically make an iPhone app compatible with the latest and the previous iOS versions (e.g. iOS 9 and iOS 8).
With Android, we recommend supporting the latest version, the most widely used version, and those versions which are popular in a given country. For example, we almost always support Jelly Bean 4.1 because it’s used by 89% of Android devices worldwide. Sometimes our clients also need support for Ice Cream Sandwich because in some countries this is still the most common version.
Since each new version of an OS comes with new functionality, we can’t ensure that the same features will work on the previous version of the system. In this case, we’ll either find a ready-made solution or create one for you. For example, auto layout only appeared in iOS 6, and gesture recognition only appeared in iOS 4. Prior to those releases we had to implement these features ourselves (yes, we're that old!).
The more OS's we support, the larger the probability of bugs. Some bugs are very rare and can show up with a new version of the operating system or on a certain device. That’s why we integrate Crashlytics, a crash reporting system, and offer all our clients support for their products once they're launched.
Read more: Testing and Quality Assurance at Yalantis
We all know that iOS is a closed-source operating system while Android’s source code is released under open-source licenses. Does this mean we’re free to choose how we want to develop our Android apps, but restricted when it comes to iOS? Yes and no.
While it might be true that Android gives more freedom to developers and we can customize anything from top to bottom, we’re also more likely to deal with platform-specific issues that will inevitably restrict our possibilities. For example, developing advanced video recording functionality on Android is a big challenge. Some features, such as Slow Motion, cannot be implemented, because nearly all Android phones fail to provide hardware support for video recording at frame rates required for the Slow Motion effect. You can read more about developing an Instagram for video on Android here.
Apple provides a lot of great tools out of the box, but it still doesn’t mean that we can’t create our own library or use one from a third-party. There is no question anymore whether one should develop a component for iOS or Android. If we build a good tool for iOS, we’ll undoubtedly port it to Android and the other way round.
For example, we’re building a number of open-source animations for both platforms, and can customize them for our clients’ projects regardless of the app we’re building. Check them out on our GitHub repository.
Now we've figured out what it takes to write code for another platform; but what about design? Porting an existing app to another platform usually means leveraging the same content, structure, and graphics. Let’s talk about that a little bit.
Moving design from one platform to another requires a deep understanding of that platform's standards and user behavior. At Yalantis, designers and developers work together to map out the best way to deliver the ultimate user experience and achieve an aesthetically pleasing user interface.
Multi-platform design adaptation can be of three types: platform-oriented, brand-oriented, and mixed.
We help our clients figure out which approach will work best in their case by analyzing the app's existing UX and core features, and suggesting a solution that can solve specific user experience problems.
Apps with rich functionality - like social networks, for example - should be designed with a specific platform in mind. In other words, we typically orient our design around platform guidelines when designing this type of application.
Following conventions of the iOS or Android platforms makes it easy for users to access an app’s content. When we port iPhone apps to iPad, or smartphone apps to wearable devices, we consider screen sizes, resolutions and user interactions which are very different across these devices.
If an existing app uses custom components and has earned the love of a large number of users, we should maintain brand consistency but at the same time avoid simply copying and pasting. Functional design elements like navigational iconography should be kept within the rules of the platform guidelines. There are exceptions to this rule, however. One of our projects, the PicklePick app, has custom everything. This design works best for the PicklePick app and the way users interact with it.
A mixed approach is best when we port iOS to Android or Android to iOS, but it's also the most complicated method. Adhering to platform specifics while remaining true to a brand’s values can satisfy all design criteria.
Testing and support
When developing an app for another platform we spend a significant amount of time on testing. As we already mentioned, a large number of devices and OS's increase the probability of bugs. The only way to make sure crucial issues don’t go to production is to carry out a thorough testing procedures.
We have a large number of iOS and Android devices and a professional team of QA engineers who use the most effective testing approaches. Our clients can rest assured that major and critical bugs are will be detected and fixed promptly.
But even the best QA team in the world can’t substitute for real-world scenarios. When an app is launched we have to be on hand for reported problems to roll out bug fixes.
Working with Yalantis, you can port your existing app to another platform and grow your business within a short period of time. Even if you don't choose us as your app development partner, we still recommend that you pay attention to the specifics described above so that your users remain happy with your app no matter what platform they are using.
If you want to read more about porting an app from one platform to another, check out our article on why to convert iOS app to Android.