À propos d'Intel Multi-OS Engine qui semble être recommandé pour libGDX. https://github.com/libgdx/libgdx/wiki/Setting-up-your-Development-Environment-(Eclipse,-Intellij-IDEA,-NetBeans)
Si vous utilisez Intel Multi-OS Engine, vous pouvez créer des applications multiplateformes avec Java ou Kotlin.
Poursuivant l'histoire précédente sur Mobile Open JDK 9, je voudrais enquêter. Compatible avec Android et iOS, à propos de Mobile OpenJDK 9
Intel Multi-OS Engine est-il familier avec cela "avec Intel"? Nana Une bibliothèque multiplateforme développée par Intel.
C'est OSS (auquel Intel fait également appel). https://multi-os-engine.org/
Il existe également une organisation sur GitHub. https://github.com/multi-os-engine
C'est "moe" pour faire court, alors jetons Core2Duo à ceux qui disent "moe" ou quelque chose comme ça.
Eclipse, IntelliJ IDEA, Android Studio。
Probablement juste un plug-in IDE Je pense que n'importe quel IDE qui peut construire Gradle peut être utilisé (même si ce n'est pas un IDE). Cela semble être la recommandation de Gradle, mais il semble que le plug-in Maven soit également préparé. https://github.com/multi-os-engine/moe-plugin-maven
Mac
Win
Le moteur d'exécution multi-OS est basé sur le moteur d'exécution Android ART. ART a certaines fonctionnalités qui fonctionnent également bien sur iOS.
[Extrait de https://doc.multi-os-engine.org/multi-os-engine/2_Introduction/Introduction.html](https://doc.multi-os-engine.org/multi-os-engine/ 2_Introduction / Introduction.html)
Ainsi, l'application écrite sur Android peut être construite telle quelle en tant qu'application pour iOS par le plug-in MOE. La figure ci-dessous montre Android Studio à titre d'exemple, mais comme mentionné ci-dessus, l'EDI n'a pas d'importance. Le plug-in Gradle est disponible, donc s'il s'agit d'un projet Gradle, l'EDI n'a pas d'importance.
[Extrait de https://doc.multi-os-engine.org/multi-os-engine/2_Introduction/Introduction.html](https://doc.multi-os-engine.org/multi-os-engine/ 2_Introduction / Introduction.html)
La partie UI doit être créée avec Xcode, etc. comme le développement iOS normal. Cependant, s'il s'agit d'un moteur de jeu compatible multiplateforme tel que libGDX, il n'y a pas beaucoup de différence d'interface utilisateur. Si vous développez une application qui vous oblige à connaître le guide de conception de chaque plate-forme, il semble que vous deviez créer une interface utilisateur pour chaque plate-forme.
Il semble qu'une bibliothèque appelée Nat4J relie natif et Java et lie l'interface utilisateur. Nat/J: Interoperability with Native Code
En guise de préparation préliminaire, dans mon cas, j'utilise IntelliJ IDEA, j'ai donc installé le plug-in moe IDE.
Vous pouvez le trouver en recherchant Préfrences> Plugin> Parcourir les référentiels ...> "multi-os".
Getting Started(Java)
L'exemple de code a été téléchargé sur GitHub.
Je vais supprimer l'exemple de code.
git clone https://github.com/multi-os-engine/moe-samples-java.git
Je vais regarder le contenu
$ ls
Calculator LocalizedString SimpleChart
CurrencyConverter MuseumMap SpeakHere
FastJNI NOTICE.txt Taxi
HelloMaven Planets TheElements
InAppPurchase README.md TicTacToe
Il contient quelques exemples d'applications. Eh bien, si vous regardez README.md, il est écrit autour de cela. Pour le moment, exécutons la calculatrice cette fois.
La configuration de l'application Calculatrice ressemble à ceci.
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
répertoire android = spécifique à la plate-forme Android, répertoire ios = spécifique à la plate-forme ios, commun = partie commune. Chacun est traité comme un module Gradle.
Il existe une classe appelée CalcActivity.java pour Android et AppViewController.java pour iOS. Il s'agit de chaque partie de l'interface utilisateur. Il n'y a rien de spécial sur le côté Android. C'est la même chose lors du développement sur Android. iOS a diverses fonctionnalités.
Il y a pas mal de fonctionnalités rien qu'en regardant l'en-tête de classe
AppViewController
@org.moe.natj.general.ann.Runtime(ObjCRuntime.class)
@ObjCClassName("AppViewController")
@RegisterOnStartup
public class AppViewController extends UIViewController {
UIViewController est une API fournie par iOS, et celle qui l'encapsule est préparée du côté du moteur multi-OS. Consultez la référence d'API d'Apple pour plus d'informations sur UIViewController. UIViewController - API Reference
Je voudrais que vous jetiez un coup d'œil rapide à la source, mais comme UIButton, UIColor, UILabel, etc. sont également préparés du côté du moteur multi-OS, ils peuvent être utilisés normalement. Le traitement du dessin est effectué par la méthode viewDidLoad. Si vous êtes impliqué dans le développement iOS, la gestion des événements, etc. peut être exprimée sans gêne.
La partie commune essentielle contient une logique utilisée sur les plates-formes Android et iOS. Dans ce cas, c'est la logique des quatre règles qui sont au cœur de l'application Calculatrice.
Pour le moment, j'ai un appareil Android réel, donc ./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
(Omission)
: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'.
L'application a été installée avec succès.
Comme son nom l'indique, c'est une calculatrice.
Je n'ai pas d'appareil iOS réel, mais comme il s'agit d'un MacBook Pro, je vais l'exécuter sur un simulateur. Commencez par démarrer le simulateur. Tout va bien.
./gradlew ios: moeLaunch -Pmoe.launcher.simulators = XXXXX (ID du simulateur).
Cela démarrera après un certain temps. Le simulateur est cependant lent.
La partie XXXXX est l'identifiant du simulateur qui peut être vu dans Simulateur> Matériel> Gérer le périphérique. Cela vous permet de l'associer au simulateur.
Oui ça a marché!
Si vous souhaitez créer un fichier ipa, il existe différentes choses telles que l'équipe de développement et le paramétrage du profil d'approvisionnement. Dans ce cas, vous devez écrire les paramètres associés dans ios / build.gradle.
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
}
}
Veuillez consulter les détails ici.
https://github.com/multi-os-engine/moe-plugin-gradle/blob/master/README.md
Getting Started(Kotlin)
L'exemple de code est également téléchargé sur GitHub.
Je l'ai déjà expliqué à ce sujet, donc on a l'impression que c'est sans matière, mais l'exemple d'application est un peu différent.
$ ls
KotlinCalculator KotlinRssReader README.md
KotlinMuseumMap NOTICE.txt
Veuillez consulter README.md pour plus de détails comme dans l'exemple. J'ai regardé à l'intérieur du KotlinCalculator et j'ai trouvé que le code était le même que l'exemple java. La configuration de Gradle est la même. C'est Android, iOS, commun. Cependant, il est écrit en Kotlin. Vous avez probablement utilisé la conversion IDE (IntelliJ IDEA convertira de Java en Kotlin).
Il y a aussi un endroit où vous pouvez discuter.
Multi-OS Engine Forum En février 2017, la version majeure a déjà été publiée, et il semble qu'il y ait de nombreux transferts depuis RoboVM, et il y a déjà de nombreux utilisateurs. La discussion est assez avancée, et si vous examinez les points addictifs, cela semble tout à fait le cas.
Le document est également très soigné. https://doc.multi-os-engine.org
Je pense que ça fait du bien.
MOE est la version 1.x du 02/02/2017, Il semble que la version 2.x inclura le support du bitcode LLVM. @snakeman Merci pour l'information!
Quand j'enquête à ce sujet J'ai trouvé un échange sur le forum appelé Est-ce que le multi-os-engine a une feuille de route?. Does multi-os-engine have a roadmap?
Comme vous pouvez le voir d'ici
à propos de ça. Il y avait aussi une feuille de route. 2.x semble sortir cette année, donc j'ai hâte d'y être aussi.