Wie BlackBerry OS10 zur Android Runtime kam – eine Meisterleistung

Einige bemerkenswerte technische Anstrengungen liegen hinter dem BlackBerry Android-Coup. Als BlackBerry OS10 im Januar 2013 gestartet wurde gab es nahezu keine Apps für das System. Heute laufen Android Apps in beeindruckender Geschwindigkeit auf BlackBerry OS10. Aber wie hat es BlackBerry geschafft? Welche enormen Anstrengungen die Ingenieure geleistet haben lest ihr in diesem Beitrag.

Android führt Java-Anwendungen auf einer Java Virtual Machine (JVM) namens Dalvik aus, die auf einem Linux-Kernel läuft. Jedes Programm läuft in einer eigenen virtuellen Maschine. Da es sich um Open Source handelt, war Dalvik einfach auf QNX, das von RIM (heute BlackBerry) im Jahr 2010 gekaufte embedded UNIX, zu portieren.

RIM versprach, dass diese Android Runtime auch auf den ersten QNX-basierten Telefonen erscheinen wird. Aber nicht alle Android Apps liefen und es gab ein unüberwindbares Hindernis. Android Apps rufen im laufenden Betrieb auch native Erweiterungen, die binären Linux ARM Bibliotheken, auf. Und es gab keine Möglichkeit, dass diese auf den Telefonen arbeiteten – so konnten auch die Apps nicht funktionieren.

Zunächst versuchten die Ingenieure von RIM native Erweiterungen zu unterstützen, indem Sie BlackBerry OS10 als ein weiteres Ziel für Entwickler von Erweiterungen zu etablieren. Sie würden OS10 als Ziel bei der Kompilierung wählen. Dies erforderte aber Überzeugungskraft. Und wenn die Entwickler nun diese Idee von Android auf OS10 nun angenommen haben, steht immer noch dieses Linux ARM Problem im Raum. Und das BlackBerry System lässt von sich aus kein Sideloading von nativen Apps zu (Anleitungen im Forum). Es schien, dass sich die Android Runtime nicht lohnen würde.

Aber ein oder zwei RIM-Ingenieure waren überzeugt, dass sie diese Lücke zwischen nativem QNX und dem Linux Code überbrücken könnten. Sie würden versuchen, die Linux-Erweiterungen nativ auf QNX laufen zu lassen, ohne eine Vorverarbeitung oder neu zu kompilieren. Niemand war sich sicher, dass es funktionieren würde – eine Quelle sagt, er sei “zu 90 Prozent sicher” – aber das Management unterstützt sie und das Team fing im Sommer 2012 mit der Arbeit an.

Linux und QNX sind beide “unixoid” (unixähnlich, unixartig). Diese Tatsache hat leider kaum geholfen. Die RIM-Ingenieure waren sich bei den Linux-Erweiterungen nicht sicher was Code und Daten waren, da beide zusammen verarbeitet werden. Sie konnten es nicht überprüfen und so die Linux-Bibliotheken patchen, so genanntes Opcode Substitution. Desweiteren fand eine Vorverarbeitung statt.

Einer der Ingenieure zu diesem Hack (dieses Wort wird bewusst gewählt):

Wir mussten die SWIs aktiv lassen damit wir erkennen konnten, ob es Linux oder QNX Code ist, ohne die Leistung des QNX Code zu beinträchtigen.

Für unsere Arbeit verwendet wir große, arbeitsintensive Komponente: dynamische Vernetzung, Validierung und Shimming der Linux-APIs auf QNX und ein wirklich tiefer und tückischer Hack: Systemaufrufe in Anwendungen abfangen und die Bibliotheken umgehen oder die Bibliotheken statisch verknüpfen.

Linux und QNX benutzen dieselben ARM SWI Anweisungen, leiten aber Systemaufrufe in verschiedene Register weiter.

Überraschenderweise waren Android Spiele leicht zum Laufen zu bringen. Aber es gab noch mehr Hürden.

Skype und Instagram sind tiefer mit den Android Diensten verknüpft und benötigen sehr viel mehr Arbeit. Ich glaube, Skype oder Instagram hat einen sich selbst modifizierenden Code als Teil von Sicherheitsmaßnahmen. Dies hätte jede Strategie zur Übersetzung der Binärdateien zugrunde gerichtet.

Trotz all der Schwierigkeiten konnten sie der Geschäftsleitung wohl Skype, Instagramm und Angry Birds als Android App auf BlackBerry OS10 demonstrieren und führten ihre Arbeit weiter.

Mitterweile sind wir bei OS10.3.0 (erschien mit und für das Passport) und bald bei OS10.3.1 angelangt. Ab OS10.3.0 ist die Android Runtime 4.3 integriert. Diese lässt eine Bearbeitung der App-Berechtigungen zu, unterstützt die BlakcBerry OS10 Kontoverwaltung, Wortvorschläge/Rechtschreibung von BB, Map View v1, WiFi-Scanning, Bluetooth LE, NFC und Share Framework. Desweiteren gibt es einen Zoom Modus, um die Darstellung von Android Apps auf die Bildschirme der verschiedenen BlackBerry Geräte anzupassen.

Quelle

Forumsdiskussion

Dieser Beitrag hat 3 Kommentare

  1. dubito

    Warum sich um diese AndroidApps bemühen? Warum keine eigenen? Die BlackBerry World ist eine einzige Peinlichkeit! Hier hätte man investieren sollen. Wenn ich zu Blackberry gehe, will ich Blackberry nutzen und nicht diesen anroiden Scheissdreck!

Schreibe einen Kommentar