Informationen zur Intel Multi-OS Engine, die für libGDX empfohlen wird. https://github.com/libgdx/libgdx/wiki/Setting-up-your-Development-Environment-(Eclipse,-Intellij-IDEA,-NetBeans)
Wenn Sie die Intel Multi-OS Engine verwenden, können Sie plattformübergreifende Apps mit Java oder Kotlin erstellen.
In Fortsetzung der vorherigen Geschichte über Mobile Open JDK 9 möchte ich dies untersuchen. Kompatibel mit Android und iOS über Mobile OpenJDK 9
Ist Intel Multi-OS Engine damit "mit Intel" vertraut? Nana Eine plattformübergreifende Bibliothek, die von Intel entwickelt wurde.
Es ist OSS (was Intel auch anspricht). https://multi-os-engine.org/
Es gibt auch eine Organisation auf GitHub. https://github.com/multi-os-engine
Es ist kurz "moe", also lasst uns Core2Duo zu denen werfen, die "moe" oder so etwas sagen.
Eclipse, IntelliJ IDEA, Android Studio。
Wahrscheinlich nur ein IDE-Plug-In Ich denke, dass jede IDE verwendet werden kann, die Gradle erstellen kann (auch wenn es sich nicht um eine IDE handelt). Es scheint Gradle zu sein, aber es scheint, dass das Maven-Plug-In ebenfalls vorbereitet ist. https://github.com/multi-os-engine/moe-plugin-maven
Mac
Win
Die Laufzeit der Multi-OS Engine basiert auf der Android-Laufzeit ART. ART hat einige Funktionen, die auch unter iOS gut funktionieren.
[Zitiert von https://doc.multi-os-engine.org/multi-os-engine/2_Introduction/Introduction.html](https://doc.multi-os-engine.org/multi-os-engine/ 2_Einführung / Einführung.html)
So kann die auf Android geschriebene App als Anwendung für iOS per MOE-Plug-In erstellt werden. Die folgende Abbildung zeigt Android Studio als Beispiel, aber wie oben erwähnt, spielt die IDE keine Rolle. Das Gradle-Plug-In ist verfügbar. Wenn es sich also um ein Gradle-Projekt handelt, spielt die IDE keine Rolle.
[Zitiert von https://doc.multi-os-engine.org/multi-os-engine/2_Introduction/Introduction.html](https://doc.multi-os-engine.org/multi-os-engine/ 2_Einführung / Einführung.html)
Der UI-Teil muss wie bei der normalen iOS-Entwicklung mit Xcode usw. erstellt werden. Wenn es sich jedoch um eine plattformübergreifende kompatible Spiel-Engine wie libGDX handelt, gibt es keinen großen Unterschied in der Benutzeroberfläche. Wenn Sie eine App entwickeln, bei der Sie den Entwurfsleitfaden für jede Plattform kennen müssen, müssen Sie anscheinend eine Benutzeroberfläche für jede Plattform erstellen.
Es scheint, dass eine Bibliothek namens Nat4J native und Java verbindet und die Benutzeroberfläche bindet. Nat/J: Interoperability with Native Code
Als vorläufige Vorbereitung verwende ich in meinem Fall IntelliJ IDEA, also habe ich das moe IDE-Plug-In installiert.
Sie finden es, indem Sie nach Einstellungen> Plugin> Repositorys durchsuchen ...> "Multi-OS" suchen.
Getting Started(Java)
Der Beispielcode wurde auf GitHub hochgeladen.
Ich werde den Beispielcode löschen.
git clone https://github.com/multi-os-engine/moe-samples-java.git
Ich werde mir den Inhalt ansehen
$ ls
Calculator LocalizedString SimpleChart
CurrencyConverter MuseumMap SpeakHere
FastJNI NOTICE.txt Taxi
HelloMaven Planets TheElements
InAppPurchase README.md TicTacToe
Es gibt einige Beispiel-Apps. Nun, wenn Sie sich README.md ansehen, ist es darum herum geschrieben. Lassen Sie uns diesmal den Rechner ausführen.
Die Konfiguration der Calculator-App sieht folgendermaßen aus.
yank-no-MacBook-Pro:Calculator yy_yank$ tree
.
├── android
│ ├── build.gradle
│ └── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── java
│ │ └── org
│ │ └── moe
│ │ └── samples
│ │ └── calculator
│ │ └── android
│ │ └── CalcActivity.java
│ └── res
│ ├── layout
│ │ └── calc_activity.xml
│ ├── mipmap-hdpi
│ │ └── ic_launcher.png
│ ├── mipmap-ldpi
│ │ └── ic_launcher.png
│ ├── mipmap-mdpi
│ │ └── ic_launcher.png
│ ├── mipmap-xhdpi
│ │ └── ic_launcher.png
│ ├── mipmap-xxhdpi
│ │ └── ic_launcher.png
│ ├── values
│ │ ├── colors.xml
│ │ ├── strings.xml
│ │ └── styles.xml
│ └── values-v21
│ └── styles.xml
├── build.gradle
├── common
│ ├── build.gradle
│ └── src
│ └── main
│ └── java
│ └── org
│ └── moe
│ └── samples
│ └── calculator
│ └── common
│ ├── CalcOperations.java
│ ├── CalcOpsTypes.java
│ └── CalculatorAdapter.java
├── gradle
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── ios
│ ├── build.gradle
│ ├── src
│ │ └── main
│ │ └── java
│ │ └── org
│ │ └── moe
│ │ └── samples
│ │ └── calculator
│ │ └── ios
│ │ ├── Main.java
│ │ └── ui
│ │ └── AppViewController.java
│ └── xcode
│ ├── ios
│ │ ├── Assets.xcassets
│ │ │ ├── AppIcon.appiconset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── Icon-76-1.png
│ │ │ │ ├── Icon-76-10.png
│ │ │ │ ├── Icon-76-11.png
│ │ │ │ ├── Icon-76-12.png
│ │ │ │ ├── Icon-76-2.png
│ │ │ │ ├── Icon-76-3.png
│ │ │ │ ├── Icon-76-4.png
│ │ │ │ ├── Icon-76-5.png
│ │ │ │ ├── Icon-76-6.png
│ │ │ │ ├── Icon-76-7.png
│ │ │ │ ├── Icon-76-8.png
│ │ │ │ ├── Icon-76-9.png
│ │ │ │ ├── Icon-76.png
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ ├── [email protected]
│ │ │ │ └── [email protected]
│ │ │ ├── Contents.json
│ │ │ └── MOELogo.imageset
│ │ │ ├── Contents.json
│ │ │ └── moe-logo-200x200.png
│ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.storyboard
│ │ │ └── Main.storyboard
│ │ ├── Info.plist
│ │ └── main.cpp
│ ├── ios-Test
│ │ ├── Info.plist
│ │ └── main.cpp
│ └── ios.xcodeproj
│ └── project.pbxproj
└── settings.gradle
47 directories, 57 files
android directory = android plattformspezifisch, ios directory = ios plattformspezifisch, common = common part. Jedes wird als Gradle-Modul behandelt.
Eine Klasse namens CalcActivity.java wird für Android bereitgestellt, und AppViewController.java wird für iOS bereitgestellt. Dies ist jeder UI-Teil. Die Android-Seite hat nichts Besonderes. Dies gilt auch für die Entwicklung unter Android. iOS hat verschiedene Funktionen.
Es gibt einige Funktionen, wenn man sich nur den Klassenkopf ansieht
AppViewController
@org.moe.natj.general.ann.Runtime(ObjCRuntime.class)
@ObjCClassName("AppViewController")
@RegisterOnStartup
public class AppViewController extends UIViewController {
UIViewController ist eine von iOS bereitgestellte API, die auf der Seite der Multi-OS-Engine vorbereitet wird. Weitere Informationen zu UIViewController finden Sie in der API-Referenz von Apple. UIViewController - API Reference
Ich möchte, dass Sie einen kurzen Blick auf die Quelle werfen, aber da UIButton, UIColor, UILabel usw. auch auf der Seite der Multi-OS-Engine vorbereitet sind, können sie normal verwendet werden. Die Zeichenverarbeitung wird von der viewDidLoad-Methode ausgeführt. Wenn Sie an der iOS-Entwicklung beteiligt sind, kann die Ereignisbehandlung usw. ohne Unbehagen ausgedrückt werden.
Der wesentliche gemeinsame Teil enthält Logik, die sowohl auf Android- als auch auf iOS-Plattformen verwendet wird. In diesem Fall ist es die Logik der vier Regeln, die den Kern der Calculator-App bilden.
Zur Zeit habe ich ein aktuelles Android-Gerät, also ./gradlew android: installDebug.
23:52:08: Executing external task 'installDebug'...
Configuration on demand is an incubating feature.
Incremental java compilation is an incubating feature.
:android:preBuild UP-TO-DATE
:android:preDebugBuild UP-TO-DATE
(Unterlassung)
:android:installDebug
Installing APK 'android-debug.apk' on 'SHV35 - 6.0.1' for android:debug
Installed on 1 device.
BUILD SUCCESSFUL
Total time: 41.502 secs
23:52:52: External task execution finished 'installDebug'.
Die App wurde erfolgreich installiert.
Wie der Name Calculator andeutet, handelt es sich um einen Taschenrechner.
Ich habe kein aktuelles iOS-Gerät, aber da es ein MacBook Pro ist, werde ich es auf einem Simulator ausführen. Starten Sie zuerst den Simulator. Alles ist gut.
./gradlew ios: moeLaunch -Pmoe.launcher.simulators = XXXXX (Simulator ID).
Es wird nach einer Weile beginnen. Der Simulator ist allerdings langsam.
Der XXXXX-Teil ist die Simulator-ID, die unter Simulator> Hardware> Gerät verwalten angezeigt wird. Auf diese Weise können Sie es dem Simulator zuordnen.
Ja es hat funktioniert!
Wenn Sie eine IPA-Datei erstellen möchten, gibt es verschiedene Dinge wie das Entwicklungsteam und die Einstellung des Bereitstellungsprofils. In diesem Fall müssen Sie die zugehörigen Einstellungen in ios / build.gradle schreiben.
moe {
signing {
// String, ID of the development team.
developmentTeam
// String, path to the provisioning profile or UUID.
provisioningProfile
// String, name of the provisioning profile (new in Xcode 8).
provisioningProfileSpecifier
// String, name of the signing identity
signingIdentity
}
}
Bitte beachten Sie die Details hier.
https://github.com/multi-os-engine/moe-plugin-gradle/blob/master/README.md
Getting Started(Kotlin)
Der Beispielcode wird auch auf GitHub hochgeladen.
Ich habe es bereits erklärt, es fühlt sich also so an, als wäre es kein Material mehr, aber die Beispiel-App ist etwas anders.
$ ls
KotlinCalculator KotlinRssReader README.md
KotlinMuseumMap NOTICE.txt
Weitere Informationen finden Sie in README.md wie im Beispiel. Ich habe in den KotlinCalculator geschaut und festgestellt, dass der Code mit dem Java-Beispiel identisch ist. Die Konfiguration von Gradle ist dieselbe. Es ist android, ios, üblich. Es ist jedoch in Kotlin geschrieben. Möglicherweise haben Sie die IDE-Konvertierung verwendet (IntelliJ IDEA konvertiert von Java nach Kotlin).
Es gibt auch einen Ort, an dem Sie diskutieren können.
Multi-OS Engine Forum Ab Februar 2017 wurde bereits eine Hauptversion veröffentlicht, und es scheint, dass es viele Übertragungen von RoboVM gibt und es bereits viele Benutzer gibt. Die Diskussion ist ziemlich weit fortgeschritten, und wenn man sich die Suchtpunkte ansieht, scheint es ganz so.
Das Dokument ist auch sehr ordentlich. https://doc.multi-os-engine.org
Ich finde es fühlt sich ziemlich gut an.
MOE ist ab 2017/02, die Version ist 1.x, Es scheint, dass Version 2.x LLVM-Bitcode-Unterstützung enthalten wird. @snakeman Vielen Dank für die Informationen!
Wenn ich in diesem Zusammenhang nachforsche Ich habe im Forum einen Austausch mit dem Titel Hat Multi-OS-Engine eine Roadmap gefunden? Does multi-os-engine have a roadmap?
Wie Sie von hier aus sehen können
darüber. Es gab auch eine Roadmap. 2.x scheint dieses Jahr veröffentlicht zu werden, also freue ich mich auch darauf.
MOE Roadmap 2016 - 2017 Winter
Recommended Posts