For a long time iOS apps’ quality and quantity far surpassed what was offered on Android due to it being a more mature platform. Arguably, on smartphone at least, the two operating systems have reached some amount of parity.
However, there are still apps which are iOS-only, and few apps on Android tablets are yet to reach the quality of those found on iPad. Six PhD students at Columbia University‘s Department of Computer Science may have solved this problem with their work on Project Cider, an OS compatibility architecture capable of running iOS apps on Android.
A proof-of-concept video has been released by the team which shows iOS apps – even Apple’s own applications such as iBooks – running on a Nexus 7 tablet:
It is achieved through leveraging binary compatibility techniques such as compile-time code adaptation and diplomatic functions. Essentially, Cider copies the libraries and frameworks it needs and then convinces the app it is running on Apple’s XNU kernel rather than Android’s Linux-based kernel.
Here’s an extract from the paper:
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.
The performance at this early stage leaves much to be desired – but this could be somewhat due to the incomplete OpenGL ES implementation. Hopefully, given time, this already impressive accomplishment can realise the dream of running both platforms’ apps side-by-side.
Project Cider, at this point, also does not support many hardware features which some apps require such as GPS, cameras, cell phone radio, Bluetooth .etc somewhat due to the a huge myriad of hardware to support which is where you will have heard many-a-time about the ‘fragmentation’ issue Android developers face in general.
No plans have been announced to continue the project, but it has a lot of support, and we can only hope the team move forward to bring us a full-fledged product from their research.
You can read the full published research paper from the team here.
Would you be interested in the ability to run iOS apps on Android? Let us know in the comments.