2015-05-12 17 views
6

Właśnie stworzyłem aplikację JavaFx, która używa biblioteki RXTX do komunikacji szeregowej, aw przyszłości będzie używać Bluecove do bluetooth. Rozumiem, że istnieje kilka sposobów na uruchomienie aplikacji JavaFx na urządzeniach z Androidem, więc rozpocząłem badania.Uruchomić aplikację JavaFX z bibliotekami zewnętrznymi w systemie Android?

Pierwsza opcja polegała na uruchomieniu aplikacji "jar" z aplikacją "Java Manager" na system Android. Problem polega na tym, że nie wiedziałbym, co zrobić z bibliotekami zewnętrznymi, ponieważ nie ma standardowej maszyny JVM na urządzeniach z Androidem, gdzie mógłbym je umieścić. Znalazłem ten projekt "http://v-lad.org/projects/gnu.io.android/", ale wygląda na to, że jest zorientowany na aplikacje na Androida.

Kiedy więc znalazłem "http://javafxports.org/", próbowałem zrobić z nim pierwsze kroki. Ten projekt wydaje się być tym, czego potrzebuję, ale jestem początkującym użytkownikiem Androida i uważam, że dokumentacja jest trochę zagmatwana, więc nie jestem pewien, od czego zacząć. Co więcej, nadal nie jestem pewien, czy mogłem używać tych bibliotek java w systemie Android z tym podejściem.

Czy ktoś wie, czy to, co udaje, jest wykonalne? W takim przypadku, jakie kroki należy wykonać?

Odpowiedz

3

Możesz już wypróbować wtyczkę JavaFXPorts. Jest to ciągły rozwój, ale ostatnie wersje są na tyle dojrzałe, że można z niego korzystać bez problemów.

Zapoznaj się z podstawowymi wymaganiami, aby rozpocząć here. Będziesz potrzebował narzędzi JDK8u40 +, Gradle 2.2+, Android SDK i Android Build.

Gdy wszystko będzie gotowe, możesz wypróbować numer samples.

Sugeruję również, aby spojrzeć na Gluon-plugin dla NetBeans. Zasadniczo stworzy on dla ciebie nowy pusty projekt JavaFX, a będziesz mógł go zbudować i wdrożyć na swoim komputerze, na platformie Android i na iOS.

Zapraszamy do obejrzenia pliku 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.**.*' ] 
    } 
} 

Przede wszystkim, po prostu trzeba zaktualizować wersję wtyczki. Sprawdź here dla ostatniego: 1.0.0-b8.

Twórz i uruchamiaj na pulpicie lub uruchom zadania, takie jak androidInstall, aby wygenerować pakiet apk i wdrożyć go na telefonie z systemem Android.

Po przetestowaniu go i wszystko działa poprawnie, można rozpocząć dodawanie kodu projektu.

I wracając do pytania, tak, możesz dodać słoik stron trzecich do projektu.

Zasadniczo wystarczy dodać zależność od pliku gradle. Można użyć compile lub runtime z plików lokalnych lub z zewnętrznych repozytoriów:

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.**.*' ] 
    } 
} 

Uwaga Można dodać zależności, które są dodawane tylko do jednej platformy, jak androidCompile lub androidRuntime.

Ponieważ apk będzie działać na maszynie Dalvik VM, dozwolone są tylko funkcje Java 7. Możesz używać lambdas, ponieważ wtyczka używa wewnętrznego projektu Retrolambda na twoim kodzie. Należy pamiętać, że nie jest on stosowany w dodanych słoikach.

Jako przykład użycia słoików w projekcie można użyć biblioteki otwartego źródła Gluon-Charm-Down, która już zapewnia dostęp do niektórych usług natywnych w urządzeniu, takich jak lokalna pamięć masowa lub 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' 
} 

W rzeczywistości, z jfxmobile wtyczki i bibliotece tej 2048FX gra została skutecznie przeniesiona na Androida (Google Play) i iOS (Apple Store).

Powiązane problemy