2016-05-09 2 views
2

Ma question est assez simple. J'utilise le plugin de Gluon pour Eclipse et développe une application en JavaFX pour fonctionner sur Android. Cependant, je dois utiliser une bibliothèque Android (format .aar) et après un certain temps d'essayer, ne peut pas. Est-ce que quelqu'un sait comment je peux faire ça? J'ai déjà essayé d'utiliser simplement le fichier classes.jar à l'intérieur du fichier .aar, alors que cela a fonctionné, il y a quelques ressources et des choses qui manquent à la bibliothèque et qui sont essentielles à sa fonction. Je vous remercie.Utilisation d'une bibliothèque aar Android dans un projet Gluon JavaFXPorts

Edit: La bibliothèque que je suis en train d'utiliser est CloudRail, le téléchargement est here (Direct download) Actuellement, en utilisant les classes de l'extrait classes.jar il est un peu fonctionnelle, mais lorsque l'activité de leur bibliothèque est lancée (com.cloudrail .si.servicecode.commands.awaitCodeRedirect.AuthenticationActivity) il est affiché mais il est vide et il n'y a rien dedans. Je suis actuellement sous l'hypothèse que c'est incorrect et que les ressources/fichiers manquants en sont la cause.

+0

Cochez cette [question] (http://stackoverflow.com/questions/31155816/javafx-android-port-google-play-services), peut-être vous aider. Sinon, veuillez indiquer le type de bibliothèque que vous devez importer. –

+0

Tous vos liens sont brisés. S'il vous plaît les revoir. –

+0

Je ne suis pas un expert sur JavaFX, mais CloudRail pour Android utilise un Android WebView pour l'authentification. Peut-être que la version JavaFX de WebView est moins puissante et ne prend pas en charge une fonctionnalité dont le SDK a besoin. – Florian

Répondre

3

J'ai réussi à extraire le classes.jar à partir du fichier AAR et l'ajouter à un projet gluons comme la dépendance.

Ensuite, j'ajouté l'activité au fichier AndroidManifest.xml, après la principale FXActivity:

<activity android:name="com.cloudrail.si.servicecode.commands.awaitCodeRedirect.AuthenticationActivity" /> 

Puis je crée une classe dans le package Android, à condition que les informations d'identification requises pour accéder à Google Drive.

public AndroidTestAar() { 
    GoogleDrive cs = new GoogleDrive(FXActivity.getInstance(), "****","****"); 
    new Thread() { 
     @Override 
     public void run() { 
      List<CloudMetaData> metas = cs.getChildren("/"); 
      Log.i("info", "Folder has " + metas.size() + " children"); 
      for (CloudMetaData meta : metas) { 
       Log.i("info", "Child: " + meta.getName()); 
      } 
     } 
    }.start(); 
} 

Cette classe est appelée à partir de la vue:

public BasicView(String name) { 
    ... 
    button.setOnAction(e -> { 
     try { 
      Class c = Class.forName("com.testaar.AndroidTestAar"); 
      c.newInstance(); 
     } catch (ClassNotFoundException | InstantiationException | IllegalAccessException ex) {} 

    }); 
} 

je pouvais déployer le apk et l'exécuter.

L'activité s'exécute en dehors de l'application JavaFX, dans une WebView Android.

D'abord, il m'a demandé de me connecter avec mon utilisateur/mot de passe, il m'a demandé autoriser l'accès en ligne, et enfin sur la console elle a énuméré avec succès tous mes fichiers.

+1

Donc, comme il se trouve. Le problème que je rencontrais n'était pas du tout lié à un quelconque problème avec l'utilisation de .aar! C'était en fait une erreur que j'ai faite en ne m'authentifiant pas avec un nouveau thread, donc en bloquant l'interface utilisateur. Merci pour votre temps José Pereda. –