2015-05-12 18 views
6

Tôi vừa phát triển một ứng dụng JavaFx sử dụng thư viện RXTX để giao tiếp nối tiếp và trong tương lai sẽ sử dụng Bluecove cho bluetooth. Đó là sự hiểu biết của tôi rằng có một số cách để chạy một ứng dụng JavaFx trên các thiết bị Android, vì vậy tôi bắt đầu nghiên cứu của mình.Chạy ứng dụng JavaFX với các thư viện bên ngoài trong Android?

Tùy chọn đầu tiên đang chạy ứng dụng đóng gói "jar" với ứng dụng Android "Trình quản lý Java". Vấn đề ở đây là tôi sẽ không biết phải làm gì với các thư viện bên ngoài, vì không có một JVM chuẩn trên các thiết bị Android, nơi tôi có thể đặt chúng. Tôi tìm thấy dự án này "http://v-lad.org/projects/gnu.io.android/", nhưng có vẻ như nó hướng đến các ứng dụng Android.

Vì vậy, khi tôi tìm thấy "http://javafxports.org/", tôi đã cố gắng thực hiện các bước đầu tiên của mình với nó. Dự án này có vẻ là những gì tôi cần, nhưng tôi là một newbie trong Android và tôi tìm thấy tài liệu một chút bối rối, vì vậy tôi không chắc chắn nơi để bắt đầu. Hơn nữa, tôi vẫn không chắc chắn rằng tôi có thể sử dụng những thư viện java trong Android với cách tiếp cận này.

Có ai biết nếu tôi giả vờ là có thể làm được không ?? Trong trường hợp đó, tôi nên làm theo các bước nào?

Trả lời

3

Bạn đã có thể dùng thử plugin JavaFXPorts. Đó là sự phát triển liên tục, nhưng các phiên bản gần đây đủ trưởng thành để sử dụng nó mà không có vấn đề gì.

Hãy xem các yêu cầu cơ bản để bắt đầu here. Bạn sẽ cần các công cụ JDK8u40 +, Gradle 2.2+, Android SDK và Android Build.

Khi bạn đã sẵn sàng, bạn có thể thử số samples.

Ngoài ra, tôi khuyên bạn nên xem Gluon-plugin cho NetBeans. Về cơ bản nó sẽ tạo ra một dự án JavaFX trống mới cho bạn, và bạn sẽ có thể xây dựng nó và triển khai nó trên máy tính của bạn, trên nền tảng Android và trên iOS.

Hãy nhìn vào các tập tin 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.**.*' ] 
    } 
} 

Trước hết, bạn chỉ cần cập nhật phiên bản plugin. Kiểm tra here cho cái cuối cùng: 1.0.0-b8.

Xây dựng và chạy trên máy tính để bàn của bạn hoặc chạy các tác vụ như androidInstall để tạo gói ứng dụng và triển khai nó trên điện thoại di động Android của bạn.

Khi bạn đã thử nghiệm và mọi thứ hoạt động đúng cách, bạn có thể bắt đầu thêm mã của dự án.

Và quay lại câu hỏi của bạn, vâng, bạn có thể thêm bất kỳ bình của bên thứ ba nào vào dự án.

Về cơ bản, bạn chỉ cần thêm phụ thuộc vào tệp gradle. Bạn có thể sử dụng compile hoặc runtime với các tập tin địa phương hoặc từ kho bên ngoài:

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

Lưu ý bạn có thể thêm phụ thuộc mà chỉ được thêm vào một nền tảng duy nhất, như androidCompile hoặc androidRuntime.

Vì gói ứng dụng sẽ chạy trên máy ảo Dalvik, chỉ cho phép các tính năng Java 7. Tuy nhiên, bạn có thể sử dụng lambdas vì plugin sử dụng dự án Retrolambda nội bộ trên mã của bạn. Hãy lưu ý rằng nó không được áp dụng trên các lọ thêm vào.

Ví dụ về cách sử dụng lọ trên dự án, bạn có thể sử dụng thư viện mã nguồn mở Gluon-Charm-Down, đã cung cấp quyền truy cập vào một số dịch vụ gốc trên thiết bị của bạn, như bộ nhớ cục bộ hoặc 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' 
} 

Trong thực tế, với plugin jfxmobile và thư viện này, các trò chơi 2048FX đã được chuyển thành công vào Android (Google Play) và iOS (Apple Store).

Các vấn đề liên quan