请问如何将JavaFX应用app打包软件成android apk?

使用Java Fx构建和开发Android应用程序-派臣公司←建站知识Build the knowledge案例778建站知识使用Java Fx构建和开发Android应用程序来源:派臣科技|时间:2017-10-03|浏览:次网上的竞技场现在充斥着许多特殊的应用程序,以满足几个客户的需求。Java平台的第一个目标是为插入的小工具提供一个产品环境。尽管如此,历史上一个奇怪的圈子使得Java成为大型商业编程最明显的进步方言。与利润丰厚的服务器市场相比,Java对客户的考虑较少。有了Javafx,Java stage现在有了一个可靠的客户段,可以用来为桌面、平板电脑、多功能和植入的框架创建应用程序。各种异常的状态工具箱以任意的速度集中在AWT上。自1995年以来,AWT一直是Java平台的一部分,它的计划标准明显陈旧,与今天的配件和编程能力不匹配。新的Java客户端Javafx是在没有任何准备的情况下编写的,考虑到来自Java世界和其他UI模式的接触。Appdynamics是一个前沿应用程序执行管理结果,它简化了复杂的业务区分应用程序的管理。Javafx是Java本质领域的一个重要部分,它是“客户”部分的权威“Java”。它与JDK和JRE一起打包在基础框架上。因此,Oracle将Javafx作为Java SE在Windows、Macos X、Linux和插入ARM框架上的传播的主要方面。在ios或Android上,Javafx没有官方的Oracle循环。足够的,这个小组正在填补这个漏洞。Robovm组包括对Javafx Robovm的支持,这使它可以使用Robovm编译器来积累Javafx应用程序,并在ios小工具上运行它们。在ios和Android上使用Javafx是非常重要的。今天,我们看到更多的应用程序需要在桌面上,以及手机和平板电脑上访问。转到App Storein请求来积累和组装应用程序,您必须引入Android SDK和javafx -Android SDK。Android SDK由百度提供,可以从Android工程师帮助站点下载。它包含android。jar API和将Java类记录更改为Dalvik字节码的设备。Android SDK还提供了与Android设备相对应的设备,这对于将应用程序交换到小工具和评估日志是很有价值的。虽然通常最好是使用阶段自治代码,但是在某些情况下,它有助于支持Android特定的执行,例如,在没有涉及Javafx或Java API的地方。Android阶段提供了不同的管理(例如恢复区域),这可以为您的应用程序提供必要的有用性。另外,请记住,桌面应用程序的用户界面形状比手持设备更大,所以当你使用Android格式时,一定要欣赏更小的脚形印象。许多Java客户工程师之前曾有一个令人失望的地方,那就是很难将Java应用程序分发给混合的移动电话。Android应用程序已经开始在网络王国的统治下,因为他们的智能和时髦的功能。本文由重庆网站建设公司派臣科技收集于网络并整理发布。重庆网站建设建站知识使用Java Fx构建和开发Android应用程序
前言:通常在采用javafx或tornadofx等框架编写的桌面软件后,若要分发给客户机进行使用,就需要先在目标客户机安装合适版本的JDK,对于客户机来说并不需要关注这一步骤,这也增加了多台客户机分发及使用的成本,客户端更关注的是软件功能的使用。安装JDK环境对于技术人员而言可能较简单,而对于非技术人员或不是很熟练的实施人员,那这一步就成为了对使用该软件的一个很大的阻碍。本文描述了如何通过gradle插件将java程序打包为exe,打包成为exe后,就可以将打包产物直接上传至客户机,直接运行软件,省去了安装JDK环境的步骤。另注:文末附有demo项目已上传至github,可以作为实际打包的参考。本文所述方法是基于java JDK1.8,其他版本jdk的打包可能不会适用。常见的将java项目打包为exe的工具有好几种,例如:exe4j,install4j,launch4j,JavaPackager,还有java14之后的Jpackage等。这些工具经过我查阅文档,对其各有大致的了解,我的目标是随着项目的迭代,一次轻量级的配置后就不用再过多关注打包环节,打包能做到方便、快捷、一键式。所以带界面的软件如exe4j,install4j这样的工具就不再考虑。经过尝试后发现采用mavan/gradle插件:JavaPackager,是最简单方便的,可定制性也足够,该插件能够支持桌面系统windows,linux,mac,能随着项目迭代而简单的通过打包命令来得到最新的exe程序,可谓是相当方便了。一、前置条件二、引入插件打开项目的build.gradle.kts(kts格式gradle脚本教程参考这里),在其中引用插件JavaPackager (版本可以直接用1.7.0,已经经过我的实际使用验证):buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath("io.github.fvarrui:javapackager:1.7.0")
}
}
apply {
plugin("io.github.fvarrui.javapackager.plugin")
}
以上插件配置后,点一下gradle快捷栏的刷新按钮:Reload All Gradle Project,此时会从mavenCentral下载该插件,以进行下一步的Plugin Task的配置。三、注册Plugin Task在build.gradle.kts中注册以下名为packageApp的task,作为实际打包的task,插件配置项的详细描述可参考:JavaPackager#plugin-configuration-propertiestasks.register<io.github.fvarrui.javapackager.gradle.PackageTask>("packageApp") {
//依赖build task
dependsOn(tasks.build)
// mandatory
//定义main方法所在class
mainClass = "com.kamjin.packdemo.MyAppKt"
// optional
//是否生成msi安装软件,直接false就好,不需要安装
isGenerateInstaller = false
//是否必须管理员权限运行程序,此处false
isAdministratorRequired = false
//打包的目标平台,此处auto,会使用当前系统环境,因为是在windows上开发所以会自动打包的是windows,也可以指定为windows,此外也可指定为其他的平台,如果想同时生成多个平台。可以多注册几个不同名字的当前task即可。例如packageAppByLinux,packageAppByMac
platform = io.github.fvarrui.javapackager.model.Platform.auto
//是否包含jre,这个需要选true,打包后将会包含可运行的jre在exe的同目录下
isBundleJre = true
//定义当前开发环境的jre目录
jrePath = file("D:\Program Files\Java\jdk1.8.0_301\jre")
//打包的软件名称,可以任意自定义比如demo,打成exe后就是:demo.exe
appName = "demo"
//需要打到项目里的其他文件,一般来说不需要,因为打为jar包时就已经将那些需要用的资源都打包进去了,如字体图片等,特殊需求时,该选项可以自行定制需要打包进去的文件
//
additionalResources = kotlin.collections.mutableListOf(file("D:\image\abc.jpg"))
}
四、使用插件(打包)插件定义完成后,可以直接运行注册的task之后就可以在项目的build/${appName}中找到已经打包好的exe及其他附属文件,如下:demo目录下内容解释:jre 目录为插件配置中指定的本地jre目录的copylibs 目录里包含当前程序运行所有依赖的第三方jar包demo.exe 为实际的windows可运行程序demo.ico 为图标资源,如果没有自定义则默认是一个咖啡图标extra.properties 该配置文件是手动放入的,也可以通过gradle的Copy Task来完成,此处我是为了演示使用外部配置的方式(将extra.properties放在exe程序同级目录下)这样生成的demo目录下的所有内容,可通过压缩包的方式分发给各客户机,而相关人员直接解压到某个目录下,就可以直接运行使用。PS: 如果需要更多的资源定制操作,可以自行定制task动作,拷贝资源,文件替换等,可以参考gradle working_with_files,如果需要定制exe资源等操作,参考JavaPackager plugin-assets。代码地址:demo代码已上传至github:javafx-gradle-package2exe-demo该demo项目中包含读取外部及内部配置文件,日志的文件写出,以及exe图标替换范例,采用kotlin+gradle,供实际打包的参考。结语:软件开发从来都不是难题,对于给目标客户机的安装和部署,往往才需要更多的精力解决。另外强烈推荐一下gradle,真的非常好用,定制性足够高,打包脚本可读性很高,主要的重点是gradle的打包速度很快,多模块项目里和maven的对比非常明显,在日复一日的软件开发部署打包环节,能节省大量的时间。再搭配docker-compose或其他编排软件,能大量的提升研发效率。有问题请评论区留言。随缘更新。再会~

个人没事业余的时候喜欢写各种小工具,所以对javaFX用的不少,也研究不了java打包方法,也碰到很多问题,总结几点个人使用体验吧,有更好解决方式希望大佬们提出来,以下为jdk17环境+Kotlin(Java同理)。1.普通方式打包成jar,内置bat/bash脚本,可以选择性隐藏窗口,还可以自己选其他工具转exe程序等等优点:开发者省心缺点:启动慢,分发不友好,要将jdk也一起打包评价:赶时间不折腾就用这个吧;2.模块化-jlink利用openfx官方插件,还是打包成jar,生成脚本优点:直接使用打包插件,分发友好,减少了运行时体积缺点:启动慢,第三方库也要支持模块化评价:找库麻烦,甚至需要自己clone代码,适配成jdk17和module-info.java;3.jpackagejdk自带打包工具,编译成exe/dmg等安装程序优点:官方自带,可以自定义安装程序界面缺点:暂无评价:成功率低,我目前没成功过,启动不了VM -.-3.native-image(伪)新一代jvm平台GraalVM支持AOT编译,利用native-image插件将jar的运行环境打包成二进制执行文件。优点:启动快;内存少;可以忽略模块化和使用低版本jdk库的问题,jar能运行打包后就能运行;缺点:编译步骤复杂、吃资源;反射配置需要依赖插件和进行功能覆盖;执行文件和jar需要一起分发,当然比起整个jdk的体积还是好不少;评价:目前个人使用最佳方案4.native-imageGluonFX插件+GraalVM平台,能够AOT编译,友好支持javafx,整个软件直接打包成二进制执行文件。优点:启动快;内存少;单个文件且体积小;可以忽略模块化和使用低版本jdk库的问题;缺点:编译步骤比3简易,但是对环境依赖以及编译步骤还是相对复杂;另外对反射等特性支持不友好;评价:因为本人用了不少Kotlin的反射特性封装了UI组件,build、run、打开普通界面都正常,唯独使用了属性引用的时候没反应,所以只能忍痛放弃,如果只是使用java,应该体验不错。总结:目前打包方式五花大门,jvm生态的程序可适当选择更先进优化的启动方式,毕竟2023年了,就算是不受重视的CS端,其实其实社区也有很多解决方案,服务端也不少框架拥抱native了

我要回帖

更多关于 app打包软件 的文章

 

随机推荐