Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

Cider: Run Native iOS Apps on Android

DZone's Guide to

Cider: Run Native iOS Apps on Android

· Java Zone
Free Resource

Learn how to troubleshoot and diagnose some of the most common performance issues in Java today. Brought to you in partnership with AppDynamics.

Java isn't the only way to build an Android app. In fact, according to the creators of Cider at Columbia University, you can just use an existing iOS app. Cider's announcement page lays out the basics of the tool, which uses "kernel-managed, per-thread personas" to mimic a foreign OS (specifically iOS) on an Android device and allow it to run foreign binaries without any modifications. The result is something like Apportable - iOS apps that run on Android.

The announcement also provides a brief overview of how it all works:

This is accomplished using a novel combination of binary compatibility techniques including two new mechanisms: compile-time code adaptation, and diplomatic functions. Compile-time code adaptation enables existing unmodified foreign source code to be reused in the domestic kernel, reducing implementation effort required to support multiple binary interfaces for executing domestic and foreign applications. Diplomatic functions leverage per-thread personas, and allow foreign applications to use domestic libraries to access proprietary software and hardware interfaces.

But if that's too wordy, take a video tour:

And if it not's wordy enough, check out the paper written by Cider's team for an in-depth look at the inner-workings. Whatever the case, Cider looks like a pretty interesting tool for iOS developers looking to get a foothold on Android.


Understand the needs and benefits around implementing the right monitoring solution for a growing containerized market. Brought to you in partnership with AppDynamics.

Topics:

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}