我刚刚开发了一个JavaFx应用程序,它使用RXTX库进行串行通信,将来会使用Bluecove进行蓝牙处理。我的理解是,有一些方法可以在Android设备上运行JavaFx应用程序,所以我开始研究。
第一个选项是运行" jar"使用Android应用程序" Java Manager"打包的应用程序。这里的问题是我不知道如何处理外部库,因为在Android设备上没有标准的JVM我可以放置它们。 我找到了这个项目" http://v-lad.org/projects/gnu.io.android/",但似乎它面向Android应用程序。
所以当我找到" http://javafxports.org/"时,我试图用它做我的第一步。这个项目似乎是我需要的,但我是Android的新手,我发现文档有点令人困惑,所以我不知道从哪里开始。此外,我仍然不确定我是否可以使用这种方法在Android中使用这些Java库。
有谁知道我假装的是否可行?在那种情况下,我应该遵循哪些步骤?
答案 0 :(得分: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.**.*' ]
}
}
首先,您只需要更新插件版本。检查here最后一个:1.0.0-b8。
在桌面上构建并运行,或运行androidInstall等任务生成apk并将其部署到Android手机上。
一旦测试完毕,一切正常,您就可以开始添加项目代码了。
回到你的问题,是的,你可以在项目中添加任何第三方jar。
基本上你只需要在gradle文件中添加依赖项。您可以将compile
或runtime
与本地文件或外部存储库一起使用:
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.**.*' ]
}
}
请注意,您可以添加仅添加到单个平台的依赖项,例如androidCompile
或androidRuntime
。
由于apk将在Dalvik VM上运行,因此只允许使用Java 7功能。但是,您可以使用lambdas,因为该插件在代码内部使用了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'
}
事实上,使用jfxmobile插件和此库,2048FX游戏已成功移植到Android(Google Play)和iOS(Apple Store)。