使用KMP(kotlin多平台)开发Compose,如何打包成可执行文件?exe、DMG……

上一次的分享中,我分享了,如何在windows平台上直接通过IDE运行compose。
使用的方式是:
双击ctrl,然后,执行 gradle run

详情见:使用KMP(kotlin多平台)在windows上出现:Cannot locate tasks that match ‘:composeApp:compileJava‘ as task

有朋友问,我是能够执行了,但是这毕竟是调试方式,它还不是一个可以分享给别人的可执行文件呀,我写一个程序,只能在自己电脑上运行,那没啥意义呀。

那今天我分享一下,如果将compose的代码,打包成一个Windows平台的可执行文件(其他平台同理,看一下就知道)。

第一步:找到打包任务。

在这里插入图片描述
首页找到你的IDE(我用的是AndroidStudio,选项卡在右边栏),Gradle选项卡 。在这个选项卡打开之后,找到 我们的项目:composeApp,关于桌面应用的任务 在compose desktop中。

然后我们就看到了一堆以package开头的任务了,然后根据任务的名字,我们就能看出来,这些任务,是给不同平台打包的。

  • Deb 结尾 —— linux系统下的执行文件
  • ForCurrentOS —— 自动识别系统,也就是给你当前使用的系统,打包一个执行文件。
  • MSI —— windows下的执行文件
  • Dmg —— MacOS下的执行文件

你可以根据自己的系统,打包出自己系统对应的执行文件。也可以打包你想打包的系统的执行文件(比如在Windows上打包macos上的dmg,注意Windows上无法打包ios的安装包,但是可以打包macos的)。

也就是说,被跳过了。所以这里为了保证成功性,就执行,packageDistributionForCurrentOS 这个任务吧!

这里,只需要双击,这个任务让它执行就好了。

第二步,找到可执行文件

在这里插入图片描述
在项目目录中,找到,build文件夹,生成的可执行文件就在这里,如上图所示(windows平台)。

build/compose/binaries/main/msi/ xxxxxxxxxxxxxxxxxxxx.msi

我们把这个文件拖到桌面上,双击就可以执行了。

第三步,安装可执行文件

在windows平台下,compose生成的并不是一个可以直接运行出我们编写的程序页面的。需要走一个安装过程。

1、双击msi,弹出安装过程

在这里插入图片描述

2、 一顿安装,(要记住自己安装的位置)

在这里插入图片描述
因为我这个程序,不会生成桌面快捷方式,所以要记住这个位置,一会好去执行。

这里也可以选择其他的位置。反正记住自己选的位置 就好了。

3、执行看效果

找到安装的位置

在这里插入图片描述

进入文件夹

在这里插入图片描述
在这里我们看到了,一个类型为应用程序的文件,双击这个文件。

执行起来了

在这里插入图片描述

你可能遇到的问题

经过上面的步骤,你已经做好了一个Windows平台下的可执行文件了。但是在这个过程中你可能会遇到问题。

1. wix311下载失败

这是用于打包成Windows下可执行文件的工具,如果下载不下来,是不行的。

解决方案 1

让你的电脑能正确方式github。(因为这个包是从github下载的)

解决方案2

手动下载文件,并放置到
GRADLE_HOME\compose-jb\

在这里插入图片描述

2. Failed to check JDK distribution: ‘jpackage.exe’ is missing

这可能是因为你是用的JDK版本问题。
jpackage.exe在低版本中没有此工具。
我安装的是jdk17。

如果安装了还没有,可以换一下其他公司的jdk,比如BellSoft的。

在AndroidStudio中可以直接下载:

在这里插入图片描述
点击如图位置,可以下载jdk。

参考:AndroidStudio如何安装其他版本JDK

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/511855.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

怎么将pom在文件放到src下方

今天在IDEA从git拉取项目的时候,发现pom.xml文件在文件夹src的上方,平时看惯了项目的pom.xml文件在文件夹src的下方,应该怎么去设置呢? 点击设置——>点击Folder Always on Top 即可 参考:http://t.csdnimg.cn/s34…

单例服务拆分为分布式架构

将独立业务服务拆分为分布式 为啥会有这个想法?因为我要造锤子,拿着造好的锤子,去找锤子,没有造锤子的经验无法找一个造锤子的坑。 现有情况说明 单机软件:就是将软件安装在自己的电脑上,自己用的那种&…

LangChain---大型语言模型(LLM)的标准接口和编程框架

1.背景说明 公司在新的一年规划中突然提出要搞生成式AI(GenAI)的相关东西,在公司分享的参考资料中了解到了一些相关的信息,之所以想到使用LangChain,是因为在应用中遇到了瓶颈问题,除了已经了解和研究过的OpenAI的ChatGpt&#xf…

springboot基于java大学生志愿者岗位补助管理系统mybatis+jsp

本系统具有以下优点: 该系统具有较高的适用性,选用B/S结构,可以在绝大部分个人平台上使用该系统。 系统将志愿者权限进行划分,管理员与志愿者能看到及操作的信息不一样,两者具备不同的操作权限。 该系统操作界面简单明…

EIP-1559

EIP EIP是以太坊改进提案(Ethereum Improvement Proposal)的缩写。它是一种标准化的提案制度,用于描述和讨论对以太坊区块链网络的改进和升级。EIP的目的是提供一个开放的、透明的过程,让社区成员、开发者和其他利益相关者能够共同…

appium解锁android真机系统的屏幕

在使用appium进行app自动化操作的过程中,经常遇到的第一个难题就是如何解锁系统屏幕,也就是亮屏解锁。 实际上解决办法如下:在desired_capabilities中增加两个参数unlockType和unlockKey,类似的示例代码如下: desire…

偶现bug如何分析和处理?

测试中比较郁闷的一件事就是遇到偶现bug。测个10次~20次才难得出来一次,甚至有时几天才会出现一次,真的去复现的时候又不记得自己执行了哪些步骤。所以遇到这样的问题都是比较头疼的。 举个例子: 打开一个论坛,有一个在线人数的信…

C语言知识

逗号表达式&#xff1a;从左到右依次计算&#xff0c;最后的结果是最右边一个表达式的结果。 #include <stdio.h>int main() {//逗号表达式int arr[] {1,2,(3,4),5};printf("%d\n",sizeof(arr));return 0; } 数组的类型&#xff1a;去掉数组名的其他部分就是…

从零开始写 Docker(四)---使用 pivotRoot 切换 rootfs 实现文件系统隔离

本文为从零开始写 Docker 系列第四篇&#xff0c;在mydocker run 基础上使用 pivotRoot 系统调用切换 rootfs 实现容器和宿主机之间的文件系统隔离。 完整代码见&#xff1a;https://github.com/lixd/mydocker 欢迎 Star 推荐阅读以下文章对 docker 基本实现有一个大致认识&…

【力扣精选算法100道】——存在重复元素 1 or 2 (哈希)

目录 &#x1f6a9;存在重复元素1 &#x1f388;了解题意 &#x1f388;算法原理 &#x1f388;实现代码 &#x1f6a9;存在重复元素2 &#x1f388;了解题意 &#x1f388;算法原理 &#x1f388;代码实现 217. 存在重复元素 - 力扣&#xff08;LeetCode&#xff09; …

【机器学习】包裹式特征选择之递归特征添加法

&#x1f388;个人主页&#xff1a;豌豆射手^ &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;机器学习 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进…

基于springboot+vue的多媒体素材库的开发与应用系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…