在Android中运行带有外部库的JavaFX应用程序?

Jua*_*uan 6 android javafx rxtx javafx-2 javafxports

我刚刚开发了一个JavaFx应用程序,它使用RXTX库进行串行通信,将来会使用Bluecove进行蓝牙处理.据我所知,有一些方法可以在Android设备上运行JavaFx应用程序,所以我开始研究.

第一个选项是使用Android应用程序"Java Manager"运行"jar"打包应用程序.这里的问题是我不知道如何处理外部库,因为在Android设备上没有可以放置它们的标准JVM.我发现这个项目" http://v-lad.org/projects/gnu.io.android/ ",但似乎它面向Android应用程序.

所以当我找到" http://javafxports.org/ "时,我试图用它做我的第一步.这个项目似乎是我需要的,但我是Android的新手,我发现文档有点令人困惑,所以我不知道从哪里开始.而且,我仍然不确定我是否可以使用这种方法在Android中使用这些Java库.

有谁知道我假装是否可行?在那种情况下,我应该遵循哪些步骤?

Jos*_*eda 3

您已经可以尝试 JavaFXPorts 插件了。它正在持续开发中,但最近的版本已经足够成熟,可以毫无问题地使用它。

看看这里开始的基本要求。您将需要 JDK8u40+、Gradle 2.2+、Android SDK 和 Android 构建工具。

一切准备就绪后,您就可以尝试样品了

我还建议您查看NetBeans 的Gluon-plugin 。基本上,它会为您创建一个新的空 JavaFX 项目,您将能够构建它并将其部署在桌面、Android 和 iOS 平台上。

看一下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.**.*' ]
    }
}
Run Code Online (Sandbox Code Playgroud)

首先,您只需更新插件版本即可。在此处检查最后一个:1.0.0-b8。

在桌面上构建并运行,或运行 androidInstall 等任务来生成 apk 并将其部署到 Android 手机上。

一旦测试完毕并且一切正常,您就可以开始添加项目的代码。

回到你的问题,是的,你可以将任何第三方 jar 添加到项目中。

基本上你只需要添加对gradle文件的依赖即可。您可以使用compileruntime使用本地文件或来自外部存储库的文件:

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.**.*' ]
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,您可以添加仅添加到一个平台的依赖项,例如androidCompileandroidRuntime

由于 apk 将在 Dalvik VM 上运行,因此仅允许使用 Java 7 功能。不过,您可以使用 lambda,因为该插件在您的代码内部使用 Retrolambda 项目。请注意,它不适用于添加的罐子。

作为在项目中使用 jar 的示例,您可以使用 Gluon-Charm-Down 开源库,它已经提供了对设备上某些本机服务的访问,例如本地存储或 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'
}
Run Code Online (Sandbox Code Playgroud)

事实上,借助jfxmobile插件和这个库,2048FX游戏已经成功移植到Android(Google Play)和iOS(Apple Store)。