2015-05-12 10 views
6

Ho appena sviluppato un'applicazione JavaFx che utilizza la libreria RXTX per la comunicazione seriale e in futuro utilizzerà Bluecove per Bluetooth. Ho capito che esistono alcuni modi per eseguire un'applicazione JavaFx su dispositivi Android, quindi ho iniziato la mia ricerca.Eseguire l'app JavaFX con librerie esterne in Android?

La prima opzione era eseguire l'app "jar" con l'app Android "Java Manager". Il problema qui è che non saprei cosa fare con le librerie esterne, dal momento che non esiste una JVM standard sui dispositivi Android in cui potrei posizionarli. Ho trovato questo progetto "http://v-lad.org/projects/gnu.io.android/", ma sembra orientato alle applicazioni Android.

Così quando ho trovato "http://javafxports.org/", ho provato a fare i miei primi passi con esso. Questo progetto sembra essere quello di cui ho bisogno, ma sono un principiante in Android e trovo la documentazione un po 'confusa, quindi non sono sicuro da dove cominciare. Inoltre, non sono ancora sicuro di poter usare quelle librerie java in Android con questo approccio.

Qualcuno sa se quello che pretendo è fattibile ?? In tal caso, quali passi dovrei seguire ??

risposta

3

Si può già provare il plugin JavaFXPorts. È in continuo sviluppo, ma le versioni recenti sono abbastanza mature da poter essere utilizzate senza problemi.

Dai un'occhiata ai requisiti di base per iniziare here. Avrai bisogno degli strumenti JDK8u40 +, Gradle 2.2+, Android SDK e Android Build.

Una volta che hai tutto pronto, puoi provare lo samples.

Inoltre, suggerisco di dare un'occhiata a Gluon-plugin per NetBeans. Fondamentalmente creerà per te un nuovo progetto JavaFX vuoto, e sarai in grado di costruirlo e distribuirlo sul desktop, su Android e su piattaforme iOS.

Dai un'occhiata alla file build.gradle:

buildscript { 
    repositories { 
     jcenter() 
    } 
    dependencies { 
     classpath 'org.javafxports:jfxmobile-plugin:1.0.0-b4' 
    } 
} 

apply plugin: 'org.javafxports.jfxmobile' 

repositories { 
    jcenter() 
} 

mainClassName = 'org.test.javafxports.TestJavaFX' 

jfxmobile { 
    ios { 
     forceLinkClasses = [ 'org.test.javafxports.**.*' ] 
    } 
} 

Prima di tutto, non vi resta che aggiornare la versione del plug-in. Controllare here per l'ultimo: 1.0.0-b8.

Crea ed esegui sul desktop o esegui le attività come androidInstall per generare l'apk e distribuirlo sul tuo cellulare Android.

Una volta testato, e tutto funziona correttamente, è possibile iniziare ad aggiungere il codice del progetto.

E tornando alla tua domanda, sì, puoi aggiungere qualsiasi vaso di terze parti al progetto.

Fondamentalmente è sufficiente aggiungere la dipendenza dal file gradle. È possibile utilizzare compile o runtime con file locali o da repository esterni:

buildscript { 
    repositories { 
     jcenter() 
    } 
    dependencies { 
     classpath 'org.javafxports:jfxmobile-plugin:1.0.0-b8' 
    } 
} 

apply plugin: 'org.javafxports.jfxmobile' 

repositories { 
    jcenter() 
} 

dependencies { 
    compile files('lib/<your local jar>.jar') 
    compile 'org.glassfish:javax.json:1.0.4' 
    androidCompile 'org.glassfish:javax.json:1.0.4' 
} 

mainClassName = 'org.test.javafxports.TestJavaFX' 

jfxmobile { 
    ios { 
     forceLinkClasses = [ 'org.test.javafxports.**.*' ] 
    } 
} 

Nota è possibile aggiungere le dipendenze che solo vengono aggiunti a una singola piattaforma, come androidCompile o androidRuntime.

Poiché l'apk verrà eseguito su Dalvik VM, sono consentite solo le funzionalità di Java 7. Puoi usare lambdas, dato che il plugin usa il progetto Retrolambda internamente sul tuo codice. Essere consapevoli del fatto che non è applicato sui barattoli aggiunti.

Come esempio di utilizzo di jar sul progetto, è possibile utilizzare la libreria open source Gluon-Charm-Down, che già fornisce l'accesso ad alcuni servizi nativi sul dispositivo, come la memoria locale o il GPS.

dependencies { 
    compile 'com.gluonhq:charm-down-common:0.0.1' 
    androidRuntime 'com.gluonhq:charm-down-android:0.0.1' 
    desktopRuntime 'com.gluonhq:charm-down-desktop:0.0.1' 
} 

In realtà, con il plugin jfxmobile e questa biblioteca, la 2048FX gioco è stato portato con successo per Android (Google Play) e iOS (Apple Store).

Problemi correlati