How to Port your iOS App to Android
It's not always necessary to mega scale Ruby on Rails projects to make them enterprise grade applications. And if you've poked around the Internet a bit, you may already be discouraged by the news that "Rails doesn't scale", but that's not entirely true.
Okay, the good news first — your iOS team has done much of the hard work and a capable Android developer shouldn't have issues porting your iOS app to Android because it's easier than building an app from scratch. Your iOS app keeps everyone on the same page because they know what your end product should look like — your iOS app is a blueprint for your design and development team to follow.
Now, the bad news — your Android developer needs to write new code because Android apps are written in Java (instead of Swift or Objective-C) and your designer needs to adapt your iOS app's User Interface (UI) to follow Google's Material Design language.
Which Android devices should you support?
Your developer won't have time to test your app on every single Android device, but let's be serious for a moment... no one does. According to OpenSignal, there were over 24,000 distinct Android devices on the market in 2015, so it's never possible to get complete test coverage for your Android app.
Even though iOS apps require less testing, your Android developer can still build a stable app that works well on most Android devices. During development, your developer should test across a number of devices with both high and low powered processors. They should test on the most popular devices in the country where your target demographic is located to ensure your users have a great experience. After your Android app launches, your analytics and crash reporting tools tell your where to focus additional testing efforts.
What about device fragmentation?
Most Android developers test on three to five of the most popular mobile devices within your target market. If you have a mobile website or responsive web application, use data from Google Analytics to determine the Android devices your customers use.
It's important to identify the top 10 android devices that your target market uses because some Android devices are extremely popular in developed countries like the United States and less popular in developing countries like India. Often, it's enough to research the top Android devices in the country you're targeting, but you may need to do further research if you're building a product for a specific industry like healthcare or age group like teenagers.
Currently, the top 10 most popular Android devices in the United States are as follows, according to AppBrain:
- Samsung Galaxy S5
- Samsung Galaxy S6
- Samsung Galaxy S4
- Samsung Galaxy Core Prime
- Samsung Galaxy Note4
- Samsung Galaxy S3
- Samsung Galaxy Note5
- Samsung Galaxy Grand Prime
- Samsung Galaxy Note3
- LG G Stylo
What Android OS versions should you support?
The versions of Android you decide to support depend on where your target market is located. DeviceAtlas provides detailed analytics about the market share of different versions of Android by country and it's a good tool to use for researching your market.
For those living in the United Kingdom, Australia and the United States, you can get away with supporting Android 4.4+ (KitKat and above). If you're developing for countries like India and Brazil, target Android 4.1.X+ (Jelly Bean and above).
You also need to keep in mind that some device makers like Samsung make it hard for their customers to upgrade to the latest Android OS version, so some of your customers may be stuck on an older version of Android until they purchase a new phone.
What about screen size differences?
You need to support numerous screen sizes when you develop your Android app, but the good news is Google provides a layout tool to help your developer create an app that looks great on any screen size. Your designer will create visual design assets for a common aspect ration and then your mobile developer will support additional screen sizes with code.
Should you follow the material design language?
Google highly recommends that you refer to and utilize their design and UI language called 'Material Design'. The common UI elements found here can reduce engineer time and increase usability.
To ensure your Android UI designs can be easily implemented, your designer should communicate directly with your developer when adapting your iOS UI to Android. Your designer may be able to easily reproduce all your iOS UI by following Google's Material Design language, but there may be instances where some features and animations need to be rethought for Android.
What are density buckets?
Because there is no standard screen resolution on Android, your developers need to account for different resolutions while porting your app from iOS to Android. Your assets should be grouped into five sizes, which are called density buckets. Each of the following should be given their own folder:
- mdpi - medium ~160dpi
- hdpi - high ~240dpi
- xhdpi - extra-high ~320dpi
- xxhdpi - extra-extra-high ~480dpi
- xxxhdpi - extra-extra-extra-high ~640dpi
How do you scale assets?
It's simple to scale assets to any screen resolution on Android. Remember, the higher the density bucket, the bigger the assets should be. If your assets are created in Sketch, Illustrator or similar programs, you may need to scale up from 1x. Bitmap assets created using Photoshop need to be scaled down to prevent loss of quality.
How do you save and name assets?
You can expect stricter file naming conventions with Android than you would with iOS. All versions of a file must have the same file name and be separated into different folders based on screen density.
It is important that your designer and developer discuss naming conventions early in the process, to optimize the saving, delivering and updating of assets.
How are assets positioned?
Because Android supports such a wide range of screen sizes and screen resolutions, UI elements and layouts aren't positioned in pixels. Instead, your developer uses size independent pixels (SP) and device independent pixels (DP) to implement your Android design assets. Here are the conversions for your reference:
- Fonts - 1sp = ~1pt
- Everything else - 1 dp = ~1px
Can different aspect ratios affect your layout?
Your developer can support varying aspect ratios by using screen size and density to determine the appropriate assets to display to your end user. This is similar to how your iOS developer uses Auto Layout to ensure your app looks great on every screen size.
How long does it take to port form iOS to Android?
While porting is typically rather straightforward, it isn't always faster when going from iOS to Android. A typical iOS app takes from 12 to 18 weeks to develop from end-to-end, but Android apps often take 30-50% more time to develop because more time is needed for testing and debugging.
Since your mobile designer already figured out most of the challenging UI/UX problems, they spend most of their time transforming iOS assets into visual design assets that follow Material Design. Your Android developers can use the same APIs that connect your iOS application to your cloud database, so your Android app shouldn't require new backend development.
The number of devices and operating system versions you need to support for your first version Android app, directly impacts the development timeline.
The word "port" may seem like a dirty word if you are a designer — like nails running down a chalkboard. However, to those capable and informed, porting is simply moving an application from one environment or operating system to another.
When you port your iOS app to Android, you can't think of it as a short re-skinning project. Since your Android app is written in a completely different language (Java), the process of creating an app your users love is complicated and requires clear communication between your designer and developer.
If you have time or budgetary constraints, you should contract out your Android porting project to an established mobile app development company. Companies with a track record of developing successful Android apps help you get your Android app to market while you hire your in-house Android development team.