IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaFX Discussion :

JavaFX sur mobile avec JavaFXPorts


Sujet :

JavaFX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2008
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 254
    Par défaut JavaFX sur mobile avec JavaFXPorts
    Bonjour,

    Quelqu'un pourrait-il m'indiquer la marche à suivre pour faire fonctionner un projet sous PC ET Android (éventuelement iOS) avec la même structure de projet (dossier, fichier, classes, FXML, etc...) avec JavaFXPorts ?

    Je sais bien qu'il existe Gluon Mobile qui est l'extension commerciale de JavaFXPorts mais j'ai pas envie de payer 499 $ par an.

    Pour vérifier la faisabilité j'utilise NetBeans et je crée le project JavaFX avec FXML de base.

    Cela fonctionne évidement parfaitement sous PC.

    Après des heures de tests et de lectures de doc/tutoriels je n'arrive à faire ce que je veux...

    Question subsidiaire : est-il possible d'utiliser aussi les composants ControlsFX avec cela ?

    Merci d'avance.

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 901
    Billets dans le blog
    54
    Par défaut
    L'ennui c'est que je suis toujours passe par Gluon pour faire cela donc j'ai droit a la boite de dialogue de démarrage donc en attendant de trouver comment faire et pour tester, tu peux quand meme utiliser Gluon Mobile en mode gratuit.
    Le seul moment ou j'ai utiliser uniquement javafxports sans passer par Gluon c'est pour faire tourner des trucs sur ARM via sa version Embedded. Comme la y a rien besoin de compiler en natif, faut juste rajouter les libs sur le classpath. Mais bon ce n'est pas ce que tu cherches.

    Ce que j'ai fait :
    • Je suis allé chez Gluon pour télécharger la derniere version de JavaFXports pour Android que j'ai dézippé dans un répertoire.
    • Je suis allé dans le répertoire dalvik-sdk\samples\HelloWorld\javafx
    • J'ai lancé gradlew et ai patienté le temps de la maj de graddle.
    • J'ai eut une erreur qui me disait qu'il ne connaissait pas le JDK 9.0.1 donc j'ai change la valeur de mon JAVA_HOME pour pointer sur le JDK 8_144 a la place
    • J'ai relancé gradlew qui alors a débuté le téléchargement de ses dépendances.
    • J'ai eut un message me d'erreur disant qu'ANDROID_HOME n’était pas défini.
    • J'ai donc édité le fichier local.properties a la racine du projet pour redéfinir sdk.dir et javafx.dir (sous Windows echapper les \ en \\).
    • J'ai relancé gradlew qui m'a dit que tout etait fini.
    • Mais ensuite en lancant gradlew tasks ou gradlew assembleDebug (mentionne dans README) j'ai l'erreur suivante :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      > failed to find Build Tools revision 21.1.1
    • J'ai donc du lancer AndroidStudio -> Configure -> SDK Manager -> SDK Tooks -> Show Package Details et installer les build tools 21.1.1 (Obsolete)
    • Une fois ceci fait, gradlew assembleDebug fonctionne et crée un fichier APK dans le répertoire build\outputs\apk
    • Malheureusement lorsqu'on essaie de lancer cette app sur un téléphone, elle se termine immédiatement.


    Ensuite, comme ça m'avait frustré, j'ai décidé de cloner directement un de leurs exemples standalone, la démo Ensemble. Du coup avec cette demo comme tout est decrit en dépendances dans build.graddle pas besoin d'avoir javafxports manuellement installer ou de redéfinir ANDROID_HOME. Par contre il faut toujours s'assurer que JAVA_HOME pointe bien vers le JDK 8.
    • Aucun soucis pour exécuter la version desktop en faisant gradlew runNom : ensemble-desktop.jpg
Affichages : 1632
Taille : 90,2 Ko
    • Mais en faisant gradlew androidInstall j'ai l'erreur :
      > Cannot expand ZIP 'C:\Users\<profile>\AppData\Local\Android\Sdk\extras\android\support\multidex\library\libs\android-support-multidex.jar' as it does not exist.
    • Pour avancer plus loin dans le fichier build.graddle, j'ai remplace :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      classpath 'org.javafxports:jfxmobile-plugin:1.0.7'
      par (en m'inspirant d'un projet de test Gluon plus recent) :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      classpath 'org.javafxports:jfxmobile-plugin:1.3.6'
    • Et après déploiement de l'application sur le téléphone, puis son lancement, j'ai eut droit a... un très joli écran noir...
    • J'ai procédé a un petit nettoyage gradle clean, gradle cleanBuildCache et j'ai recommencé a compiler et.... TINLIN !!!!!
      Nom : ensemble-mobile.jpg
Affichages : 1629
Taille : 89,8 Ko


    Voila donc le projet Ensemble est probablement une bonne base pour une nouvelle application. Par contre pour le coup c'est vraiment une application pure (extends Application) et non pas un truc qui tourne sur la surcouche Gluon Mobile (extends MobileApplication ou extends View) donc y a 0 intégration avec Android (même si la touche <- fonctionne cependant, faudra voir le code source sur le pourquoi du comment). Donc pour tout ce qui est GPS ou les divers services platform agnostic ou les controles custom mobiles fournis par la surcouche Gluon, ben faudra chercher des alternatives pour invoquer qq chose de similaire...

    Et j'ai pas tester avec la VM Gluon supportant le JDK 9 paske bon j'avais pas que ca a faire et ca rajoute pas mal de dependances...

    Et j'ai pas teste sur iOS non plus

    Sinon oui en theorie ControlsFX et n'importe quelle lib Java qui n'utilise pas de natif ou d'invokeDynamic fonctionne mais après faut tester au cas par cas et surtout dans le cas de controles graphiques, verifier sur leur fonctionnement, position, apparence, etc. fonctionne sur une plateforme mobile.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  3. #3
    Membre éclairé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2008
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 254
    Par défaut
    Merci beaucoup de tes efforts.

    C'est une piste.

    Mais y a pas de FXML avec ça...

    J'ai pas envie de me farcir toutes les constructions UI à la main...

  4. #4
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 901
    Billets dans le blog
    54
    Par défaut
    Je ne vois pas du tout ce qui empêcherai de mettre du FXML dedans (après tous Gluon le fait très bien pour les apps de son framework). Tu as un début de piste, à toi de tester plus en avant !
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  5. #5
    Membre éclairé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2008
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 254
    Par défaut
    J'essaie de faire un test sous Windows 10 avec l'arborescence nécessaire à Gradle...mais sans succes.

    Voici l'arborescence : Nom : arbo.PNG
Affichages : 1510
Taille : 11,0 Ko

    Et voici le code de JavaFXTest.java :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    /*
     * To change this license header, choose License Headers in Project Properties.
     * To change this template file, choose Tools | Templates
     * and open the template in the editor.
     */
    package main.java.javafxtest;
     
    import javafx.application.Application;
    import javafx.fxml.FXMLLoader;
    import javafx.scene.Parent;
    import javafx.scene.Scene;
    import javafx.stage.Stage;
     
    /**
     *
     * @author Carlo
     */
    public class JavaFXTest extends Application {
     
        @Override
        public void start(Stage stage) throws Exception {
     
            FXMLLoader loader = new FXMLLoader();
            loader.setLocation(getClass().getResource("FXMLDocument.fxml"));
            Parent root = loader.load();         
     
            Scene scene = new Scene(root);
     
            stage.setScene(scene);
            stage.show();
        }
     
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) {
            launch(args);
        }
     
    }
    et voici l'erreur :

    Exception in Application start method
    java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:389)
    at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:328)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:767)
    Caused by: java.lang.RuntimeException: Exception in Application start method
    at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:917)
    at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$154(LauncherImpl.java:182)
    at java.lang.Thread.run(Thread.java:748)
    Caused by: java.lang.IllegalStateException: Location is not set.
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2434)
    at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2409)
    at main.java.javafxtest.JavaFXTest.start(JavaFXTest.java:25)
    at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$161(LauncherImpl.java:863)
    at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$174(PlatformImpl.java:326)
    at com.sun.javafx.application.PlatformImpl.lambda$null$172(PlatformImpl.java:295)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.application.PlatformImpl.lambda$runLater$173(PlatformImpl.java:294)
    at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at com.sun.glass.ui.win.WinApplication.lambda$null$147(WinApplication.java:177)
    ... 1 more
    Exception running application main.java.javafxtest.JavaFXTest

  6. #6
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 901
    Billets dans le blog
    54
    Par défaut
    Le chemin d’accès de ton FXML ne semble pas valide. As-tu vérifié que l'URL retournée n'est pas null ? Essaie avec "/FXMLDocument.fxml".
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème de rendu unity sur mobile avec remote4
    Par honosstoa dans le forum Unity
    Réponses: 3
    Dernier message: 25/10/2015, 15h47
  2. SIG sur mobile avec Android
    Par developpCathy dans le forum Android
    Réponses: 8
    Dernier message: 16/01/2012, 15h03
  3. SIG sur mobile avec Android
    Par developpCathy dans le forum SIG : Système d'information Géographique
    Réponses: 2
    Dernier message: 11/01/2012, 18h24
  4. [XML] SIG sur mobile avec Android
    Par developpCathy dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 31/12/2011, 16h42
  5. 3D sur mobile avec j2me
    Par chabfive dans le forum API graphiques
    Réponses: 1
    Dernier message: 10/11/2006, 09h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo