Android apps on Sailfish
Sailfish OS apps come in two kinds: native applications written in Qt and QML and installed as RPM packages, and Android applications that run inside a licensed compatibility container which shares the same Linux kernel, is not an emulator, and ships without Google Play services.
What a Sailfish OS app actually is
A Sailfish OS app, in the native sense, is an ordinary Linux program. It is written in C++ and QML against the Qt framework and Jolla’s Silica component set, built into an RPM package, and installed by the package manager into a normal filesystem. There is no managed runtime between the application and the kernel, which is why native applications are small and quick on hardware that would be considered modest by Android standards. Native software reaches devices from three places: the Jolla Store on the phone, the community repositories Chum and OpenRepos, and direct installation of a package file by anyone with developer mode enabled.
The native catalogue is small in absolute terms. That is the honest position, and it is the reason the Android layer exists at all. Jolla has never published an application count for the store, so no figure appears here.
Is Sailfish OS based on Android
No, Sailfish OS is not based on Android, and the two are related only at the kernel. Sailfish is a Linux distribution with systemd, glibc, RPM packaging and a Qt stack, and its core descends from the Mer project, which continued the MeeGo core after Nokia and Intel abandoned the joint programme they had announced in February 2010. That history is set out on the page for MeeGo, and the platform itself on the page for Sailfish OS. Android is also built on the Linux kernel and shares nothing above it: no glibc, no systemd, no Qt, a different application model and a different packaging format.
One qualification is fair. On handsets designed for Android, such as the licensed Sony Xperia models, Sailfish runs on the vendor’s Android kernel and reuses the vendor’s hardware adaptation drivers through a shim called libhybris, because no other drivers exist for that silicon. Reusing a driver stack is a porting technique. It does not make the system a derivative of Android any more than running on an Intel chipset makes it a derivative of Windows.
How Sailfish OS runs Android apps
Sailfish OS runs Android apps in a container rather than an emulator, and the distinction is the whole point. An emulator would translate one processor’s instructions into another’s and pay a heavy speed penalty for it. The container instead runs the Android runtime and its libraries as a confined process group on the same ARM processor and the same Linux kernel that the rest of the system uses, with graphics, audio and input bridged out to the host. Android code therefore executes natively, and the cost is memory rather than speed.
The implementation has changed twice. On the 2013 Jolla Phone the layer was Alien Dalvik, licensed from the Myriad Group, and it presented an Android 4.1 environment. Jolla later replaced it with a container of its own design, which it develops as a separate product and also licenses to other companies for use on other Linux platforms, and which has been raised through successive Android base versions as the release line has moved on. The layer is proprietary. That single fact explains most of what follows.
Where Android apps come from without Google Play
Android apps arrive on a Sailfish phone without Google Play, because Jolla has no licence to ship Google’s store or its services. Four routes are in normal use:
- Install an APK file directly, by opening it from the file manager or the browser.
- Install F-Droid, which carries free and open source Android applications and depends on no Google component.
- Install a third-party Android store client such as Aptoide or APKPure, which Jolla has bundled or suggested at various points in the release line.
- Install the Amazon Appstore, which Jolla shipped on earlier devices, where it is still available.
Nothing about that list is exotic; it is the same set of options an Android user without Google services would reach for. What differs is that on Sailfish the absence is permanent rather than a configuration choice.
What breaks: Google services, attestation and banking
Google services are what break, and the breakage is systematic rather than random. An Android application that calls Google Play services for push notifications will not receive them, so chat and delivery applications either fall back to polling or stay silent. An application that uses Google’s maps or location libraries loses those features. Most seriously, an application that checks device integrity through Google’s attestation service sees a device that fails the check and refuses to run at all. Banking applications, payment wallets and some streaming services are the usual casualties, and this is the limitation people actually hit rather than any question of speed.
Community workarounds exist, chiefly microG, which reimplements parts of the Google services interface. They help with push messaging more often than they help with attestation, and no workaround should be treated as a guarantee that a specific banking application will run. Anyone whose bank has no web interface should test before committing to the platform.
Sailfish OS versus Android, side by side
| Aspect | Sailfish OS | Android |
|---|---|---|
| Base system | Linux with systemd, glibc and RPM packaging | Linux kernel with Android’s own userland |
| Native app format | RPM package, Qt and QML | APK, managed runtime |
| Android apps | Run in a licensed container on supported devices | Native |
| Google Play services | Absent by design | Present on licensed devices |
| Navigation | Edge gestures, no back button | Gesture or button navigation bar |
| Shell and root | Available through developer mode | Requires unlocking and rooting |
Read the table as a description of trade-offs rather than a scoreboard. Sailfish gives a conventional Linux system on a phone and accepts a smaller native catalogue; Android gives the catalogue and the services and accepts the runtime and the dependencies that come with them.
Why there is no Sailfish launcher for Android
No Sailfish launcher for Android exists as an official product, and there is no version of the system you install from inside Android as an app. Sailfish replaces Android on the device: it is flashed to the phone’s partitions under a licence sold by Jolla, or it comes preinstalled on Jolla’s own hardware. Third-party launchers that imitate the edge gestures are themes running on Android and they carry none of the underlying system. The one legitimate way to see the interface without buying hardware is the free Sailfish SDK, whose desktop emulator runs the full user interface in a virtual machine.
This is an independent reference. It is not Jolla, not Nokia, not maemo.org and not the original Maemo Freak blog. It hosts no firmware, no ROMs and no repackaged applications, and it distributes no APK files.