Nuxeo und RoboVM: Tauchen Sie ein in die plattformübergreifende mobile Technologie für iOS und Android unter Verwendung von Java


Thu 23 July 2015 Von Vladimir Pasquier

Big Dive-Jump into waterDa wir stets bemüht sind, die Nuxeo Platform besser und effizienter zu machen, haben wir unsere Aufmerksamkeit auf den mobilen Automatisierungs-Client von Nuxeo gelenkt. Der Automatisierungs-Client von Nuxeo stellt eine leistungsstarke Client-Implementierung für Java-Programmier bereit und erleichtert Ihre Aufgabe, indem alle Einzelheiten auf Protokollebene verarbeitet werden.

Seit Nuxeo Android-SDK und Nuxeo iOS-SDK wollte unser Team ein plattformübergreifendes Framework entdecken, das den Automatisierungs-Client von Nuxeo als einzige Java-Bibliothek für iOS- und Android-Systeme integrieren kann. Dadurch wird die Erstellung von Anwendungen auf dem Client für Entwickler schneller und effizienter.

Wir wurden auf die Technologie von RoboVM aufmerksam. Schauen wir uns die Details zur Integration von RoboVM mit Nuxeo und die Gründe für die Verwendung genauer an.

RoboVM


Eine Entwicklung für Mobilgeräte bedeutet immer auch eine gleichzeitige Entwicklung für Android und iOS. RoboVM stellt eine Möglichkeit bereit, für beide Plattformen zu entwickeln:


  • Indem echte native mobile Apps für iOS und Android erstellt werden.

  • Durch die Verwendung von Bibliotheken, Tools und Sprachen des riesigen Java-Öcosystems

  • Durch die gemeinsame Nutzung von Codes zwischen den Plattformen


RoboVM IDE und Plugins basieren auf IDEA EAP 15. Bei dieser Version von Intellij handelt es sich um ein "Early Access"-Programm, kann jedoch von der offiziellen IDEA-Website heruntergeladen werden.

Ein RoboVM-Projekt hat folgende Struktur:

RoboVM-Projektstruktur


  • Android: enthält alle Aktiviäten/Controller für die Android-Anwendung

  • iOS: enthält alle Ansichten/Controller für die iOS-Anwendung

  • Core: der Core wird von den Android- und iOS-Ebenen gemeinsam benutzt und kann HTTP-Protokollhandler oder Speicherebenen enthalten


RoboVM-Projekte wie etwa gängige Android-Projekte verwenden Gradle für das Abhängigkeitsmanagement.

Erstes Ziel: Nuxeo-Integration


Unser erstes Ziel lag darin, den Nuxeo-Automatisierungs-Client in ein RoboVM-Anwendungsbeispiel zu integrieren. Die Integration in das Core-Projekt für Android und iOS war schnell und leicht. So sind wir vorgegangen:

Für Android:

Für die Google-Plattform mussten wir einige Automatisierungs-Client-Bibliotheken ausschließen, die in Android schon als Apache-Bibliotheken vorhanden waren, etwa httpcore- oder httpclient-Bibliotheken. Dann mussten wir die Anwendung in Android ausführen, sodass die Laufzeitausführung funktioniert. Dafür haben wir Apache-Funktionen entfernt, die nicht von Apache-Android-Bibliotheken bereitgestellt werden.

screenshot_2015-07-22_14.44.16

Für iOS:

Nach unserer Arbeit an Android haben wir keinerlei Mängel an der Bereitstellung und der Ausführung für iOS entdeckt.

Ergebnis:

Für die Android- und iOS-Plattformen haben wir erfolgreich ein RoboVM-Projekt erstellt, indem wir den Nuxeo-Automatisierungs-Client für die einfache Entwicklung von IPA- oder APK-Anwendungen bereitgestellt haben.

Hier können Sie sich das Projekt ansehen: https://github.com/nuxeo-sandbox/nuxeo-robovm

Die Verwendung der Nuxeo-Bibliothek für die iOS-Entwicklung


Nach unserer ursprünglichen Arbeit an RoboVM mussten wir uns über native iOS-Entwickler Gedanken machen, die in der Lage sein sollten, diese RoboVM Core-Bibliothek in ihren Objective-C- oder Swift-Projekten zu verwenden.

Wir haben erfolgreich eine iOS Core-Bibliothek ausgelagert. Sie benötigte jedoch einen JNI-Wrapper und Introspektion in einem iOS-Projekt (damit die Anwendung funktioniert, wurde es auf Entwicklerseite etwas komplizierter).

Die Integration des Nuxeo-Automatisierungs-Clients mit RoboVM war ziemlich einfach und erfolgreich. Wir waren in der Lage, iOS- und Android-Anwendungen mit dem gleichen Freigabe-Core-Code zu erstellen, um Aufrufe vorzunehmen und mit dem Nuxeo Platform-Server zu kommunizieren. Die Arbeit an der Auslagerung einer iOS-Bibliothek war jedoch nicht einfach.

Wie geht es weiter?


Da RoboVM den JVM-Byte-Code in einen Maschinencode für iOS kompiliert, konnten iOS-Entwickler nicht mithilfe von XCode entwickeln. Also haben wir nach einer Alternative gesucht, um ihre Arbeit mit dem Nuxeo-Automatisierungs-Client zu vereinfachen.

Wir entdeckten hierfür die perfekte Technologie: J2ObjC konvertiert dabei direkt zwischen Java- und Objective-C-Code. Einzelheiten dazu besprechen wir in Kürze. Bleiben Sie dran, um weitere Neuigkeiten zu erfahren!


Kategorie: Product & Development
Etikettiert: Insight, Nuxeo Integration, RoboVM