MeetCider,AResearchProjectThatAllowsAndroidDevicesToRuniOSApps

Six PhD students at Columbia University have created Cider, a piece of software that allows Android-powered devices to run both domestic and foreign binaries – in this case, Android and iOS applications – on one single handset or tablet.

They leverage binary compatibility techniques such as compile-time code adaptation and diplomatic functions. This means Cider can copy the libraries and frameworks it needs and convince an app’s code that it is running on Apple’s XNU kernel rather than Android’s Linux kernel.

As such, Cider is unlike the traditional virtual machine setup you might expect from such a project; users can literally switch between Android and iOS applications on the same device, as demonstrated in a recent proof-of-concept video from the team behind Cider:

Being a prototype, however, there are of course limitations to Cider in its present form. The software can’t get access to a device’s built-in camera, its GPS signal, its cell radio, or Bluetooth, for example, meaning certain iOS apps won’t function as expected when running through Cider.

However, the six students – Jeremy Andrus, Alexander Van’t Hof, Naser AlDuaij, Christoffer Dall, Nicolas Viennot, and Jason Nieh – have noted that they’re continuing to further develop Cider, and as such we could see an even more accomplished iteration demonstrated in the near future.

For now, we’ve included the abstract for the group’s paper on Cider below, which provides more of a detailed overview of the software:

We present Cider, an operating system compatibility architecture that can run applications built for different mobile ecosystems, iOS or Android, together on the same smartphone or tablet. Cider enhances the domestic operating system, Android, of a device with kernel-managed, per-thread personas to mimic the application binary interface of a foreign operating system, iOS, enabling it to run unmodiﬁed foreign binaries.

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 unmodiﬁed 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. We have built a Cider prototype, and demonstrate that it imposes modest performance overhead and runs unmodiﬁed iOS and Android applications together on a Google Nexus tablet running the latest version of Android.