Cross-platform development has presented a major challenge for most independent developers for many years. Quite often, it's simply too much of an time and resource investment to learn a new programming language in order to port your app over to another platform.

For years, this fact of resource allocation is what has pushed many developers to primarily focus their efforts on iOS, due to the more lucrative market. Thanks to projects such as Xamarin, however, developers who are familiar with C# have been able to push their projects across iOS, Android, and Windows Mobile. But Android developers are most familiar with writing in Java, so using Xamarin would require a developer to familiarize themselves with a new language and build platform. We've covered one project aimed at bridging the gap between mobile operating systems by providing a cross-development platform for Java developers - Intel's Multi-OS Engine - but there's no telling where that project is headed. That's where MechDome comes in.

MechDome is a start-up company based in California and incorporated in January that has developed a conversion tool to automatically create native iOS and OS X apps from your Android app. No need to learn how to use a new IDE or API. All you need to do is send an APK file to MechDome (no need to send them your source code), and the fully automated tool will compile a standalone binary in seconds for iOS and OS X that the developer can then distribute on Apple's App Store. We sat down in an interview with MechDome's founder and CEO, Mario Kosmiskas, to see a demonstration of the tool in action - and it works. Although there are some limitations due to fundamental differences between how iOS and Android operate (which we'll discuss below), the tool has already produced a few live apps on the Apple App Store such as the open-source Reddit client RedReader and an open-source Sudoku client to prove it works.


Android Apps on iOS with MechDome

The stated goal of MechDome is to allow developers to convert an unmodified Android app into a native iOS or OS X app. Compared to technologies such as Intel's Multi-OS Engine or Xamarin, an Android developer does not need to know how to bind an Objective-C library because the tool will handle that for you. Nor is there any need to use a UI builder to modify your Android app, as MechDome handles converting all Android UI elements. Yes, even Android tablet apps translate nicely into a format suitable for iPads.

 

MechDome's biggest promise is that the converted Android app will function in a manner that users of the target OS will be familiar with. For instance, the Android share menu will be replaced with the native share sheet in iOS, and will include the ability to use AirDrop if applicable. Apps that post notifications in Android will instead display a notification in iOS's Notification Center. Certain intents such as opening a camera on Android will indeed open the camera on the iOS device, and URL intents on Android will call Safari on iOS. Content providers on Android that access contacts or the calendar will instead access the relevant iOS or OS X databases for this information.
In general though, all hardware functionality required for the use of an Android app will be mapped directly to use the relevant hardware in iOS. Software functions, though, can be split into 3 distinct categories: 1) functionality that doesn't exist on iOS (such as the toast message) will be implemented directly, 2) functionality that exists on both iOS and Android are replaced with the relevant iOS method, and 3) functionality that exists on iOS but not on Android (such as Apple's 3D Touch library) cannot be converted but can be implemented through the use of a library. Most activities, views, services, toasts, and basic content providers should be convertible from Android to iOS, according to MechDome's founder.

But as mentioned previously, there are indeed some limitations to this tool that are imposed by the nature of how iOS works. One of the biggest challenges facing an Android developer looking to convert his or her app to iOS is how to handle a background service. iOS is much more stringent with when and what kinds of background services that third-party applications can run, for better or worse. Furthermore, the rich intent system present in Android that allows for inter-app communication is largely absent on iOS. Finally, the Google Play Services API is currently not supported, so any app relying on Google services will not function. Thus, developers will be mostly limited to functionality that is accessed directly by manual user input, which should not pose a significant problem for most games or apps.


MechDome In Use
In a private demo, the tool does indeed seem to function as advertised. Mr. Kosmiskas demonstrated compiling several fully functional Android apps into working iOS and OSX apps. Toast notifications, notifications in the Notification Center, webview, location access, text input, and general functionality of UI elements all worked in demo. The AOSP calculator running on iOS looked and functioned exactly as it does on any Android device.
Updating an application and re-compiling it for iOS was also shown, and the process fairly simple. The developer, in this case Mr. Kosmiskas, demonstrated changing a text box to display "XDA-Developers" in Android Studio. He then exported the app, generated a signed APK, and compiled the iOS and OS X binaries in seconds from the MechDome server. When the iOS app was started using an emulator, the changes made in Android Studio were present.

Currently, MechDome is undergoing a free public beta program. Developers can register their app on the MechDome website to receive an invite to test converting their Android app. No pricing information has yet been unveiled for the service, unfortunately. Still, it's an interesting project to stay on the lookout for if you're an Android developer looking to eventually make waves in Apple's ecosystem without having to expend much effort of your own.