在Android中使用外部库运行JavaFX应用程序?

6
我刚开发了一个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库。
有人知道我想做的事情是否可行吗?如果是这样,我应该遵循哪些步骤?
1个回答

3
您可以尝试使用JavaFXPorts插件。它正在不断发展,但最近的版本已经足够成熟,可以无问题地使用它。
请查看开始所需的基本要求here。您将需要JDK8u40+、Gradle 2.2+、Android SDK和Android Build工具。
一旦您准备好了所有的东西,您就可以尝试samples
此外,我建议您查看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.**.*' ]
    }
}

首先,您只需要更新插件版本。请查看此处获取最新版本: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.**.*' ]
    }
}

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

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

作为在项目中使用jars的示例,您可以使用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'
}

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接