基于Kotlin Multiplatform实现静态文件服务器(一)

news2024/9/21 15:55:33

本文将介绍如何基于Kotlin Multiplatform、Jetpack Compose实现静态文件服务器,并运行在Android、Windows以及Linux(暂不支持server和mac)。

创建KMP(Kotlin Multiplatform)项目

环境设置
  1. 安装Android Studiio 2023.3.1以上版本, 之前版本需要自行安装KMP插件。

  2. 安装JDK 14以上版本,或使用Android Studio 自带jre环境,但缺少package.jar,无法打包。

推荐下载bellsoft的全量JDK,比较好用。下载地址:https://bell-sw.com/pages/downloads/。

     3. 安装Kotlin 1.9.0 插件。Android Studio自带,如需特殊版本,则需要自行安装或更新。

创建多平台应用

KMP 官方推荐使用多平台项目创建向导进行项目创建,KMP项目创建向导。

在向导页,先只选择Android 和 Desktop。点击Dowload。

打开Android Studio 后,打开已下载的KMP项目。

项目配置

首次导入项目后,gradle会同步依赖项,如同步出现错误 ,可按需修改gradle国内资源代理。在gradle/wrapper/gradle-wrapper.properties中,修改distributionUrl。

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-8.7-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

在settings.gradle.kts中,配置相关镜像地址。

pluginManagement {
    repositories {
        maven { url = uri("https://mirrors.ustc.edu.cn/maven-central") }
        maven { url = uri("https://maven.aliyun.com/repository/google") }
        maven { url = uri("https://maven.aliyun.com/repository/public") }
        maven { url = uri("https://maven.aliyun.com/repository/gradle-plugin") }
        google {
            ...
        }
        mavenCentral()
        gradlePluginPortal()
        maven("https://maven.pkg.jetbrains.space/public/p/compose/dev")
        maven("https://maven.pkg.jetbrains.space/kotlin/p/wasm/experimental")
        maven( "https://androidx.dev/storage/compose-compiler/repository")
        maven("https://maven.pkg.jetbrains.space/kotlin/p/kotlin/dev")
        maven("https://central.maven.org/maven2/") // for netty
    }
}

运行多平台应用程序

在Android设备上运行
  1. 创建一个Android虚拟机或连接Android手机,并开启开发者选项,开启USB调试并授权电脑调试(Android 14以上的设备,可以通过局域网进行调试)。

  2. 在运行配置列表中,选择composeApp。

  3. 选择 Android 虚拟机或已连接的可调式手机,然后单击运行,编译完成后,将在所选设备上运行该应用程序。

  4. 启动后显示如下:

 在桌面上运行

在桌面上运行,需要手动设置运行配置或执行gradle命令。

  1. 点击Android Studio 右侧的Gradle图标

  2. 点击执行Gradle命令图标。

  3. 键入运行桌面应用程序的命令后按回车开始编译。

desktopRun -DmainClass=MainKt --quiet

     4. 编译完成后会自动运行。

 如需运行其他平台,如Web、Server等,请参考创建您的多平台项目。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java二十三种设计模式-迭代子模式(16/23)

迭代器模式:顺序访问集合的稳健方式 引言 迭代器模式(Iterator Pattern)是一种行为型设计模式,它允许顺序访问一个集合对象中的各个元素,而不需要暴露集合的底层表示。 基础知识,java设计模式总体来说设计…

ESP32-C3在MQTT访问时出现“transport_base: Poll timeout or error”问题的分析(1)

笔者最近在测试时,突然遇到了以下错误: 网上看过一些帖子,要么就是只提出遇到了相同问题,但没有解答。如:transport_base: Poll timeout or error, errno=Connection already in progress - ESP32 Forum 要么就是和本问题类似,但不完全相同的问题。如: TRANSPORT_BASE:…

Tomcat学习进阶

目录 Apache Tomcat架构配置线程模型Tomcat 的类加载机制类加载器层次结构类加载流程 Tomcat 的优化策略Tomcat 的集群部署Tomcat故障排查 Apache Tomcat 架构配置 Apache Tomcat是一个开源的Java Servlet容器和Web服务器,它实现了Java EE规范中的Servlet和JSP API。…

mysql中的innodb存储结构

什么是InnoDB存储引擎 InnoDB是MySQL的默认存储引擎,它是一个事务安全的存储引擎,支持行级锁定和外键约束。InnoDB为MySQL提供了高性能、高可靠性和高可用性的解决方案。 InnoDB 的核心特点和功能 事务支持:InnoDB支持ACID事务特性&#x…

[算法题]【模板】前缀和/【模板】二维前缀和

题目链接: 【模板】前缀和 / 【模板】二维前缀和 两道前缀和模板题. 【模板】前缀和: 定义一维前缀和数组: presum[i]: 表示 1 - i 位置的和 状态转移方程: presum[i] presum[i - 1] arr[i - 1] 定义数组时多开一个位置, 下标位置从 1 开始计算, 不从 0 开始是为了避免越界…

我眼中的胶水工作:挑战与机遇并存

我眼中的胶水工作:挑战与机遇并存 胶水工作,看似不起眼,却如同团队运作的隐形脉络,起着至关重要的连接作用。它涵盖了各种各样的任务,从注意到团队成员的阻碍并伸出援手,到审查设计文档,再到新…

实现微信的订阅消息或模板消息API来实现实时通知(服务通知)

实现微信的订阅消息或模板消息API以实现实时通知,需要经过几个关键步骤,包括用户订阅、消息发送和接收消息事件。以下是具体实现流程: 1. 用户订阅消息 首先,需要让用户订阅消息。这通常通过前端代码触发一个授权请求来完成&am…

C:每日一题:字符串左旋

题目:实现一个函数,可以实现字符串的左旋 例如:ABCD左旋一个字符就是BCDA;ABCD左旋两个字符就是CDAB; 1、解题思路: 1.确定目标旋转k个字符,我们要获取字符串的长度 len,目的是根…

8.14 day bug

bug1 好家伙,折腾一个小时没通过,原来是代码写多了 // 定义初始状态 const defaultState {login: false };// 定义 reducer const reducer (state defaultState, action) > {if (action.typeLOGIN) {// 当接收到 LOGIN action 时,更新…

备战秋招60天算法挑战,Day20

题目链接: https://leetcode.cn/problems/reverse-bits/ 视频题解: https://www.bilibili.com/video/BV1W2421Z7bi/ LeetCode 190.颠倒二进制位 题目描述 颠倒给定的 32 位无符号整数的二进制位。 举个例子: 输入:n 00000010…

Nginx--简介、安装、常用命令和配置文件

前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除 一、Nginx简介 1、nginx介绍 Nginx (engine x) 是一个高性能的 HTTP 和 反向代理 服务,也是一个IMAP/POP3/SMTP服务。因它的稳定性、丰…

分布式锁实现方案--redis、zookeeper、mysql

分布式锁的几种实现方式 悲观锁和乐观锁分布式锁的实现要求 -- 互斥性、避免死锁、可重入性、高可用行、性能互斥-只能有一个客户端持有锁 -- redis setnx避免死锁引入过期时间 -- redis ttl锁过期问题 -- 自动续期 -- redis释放别人锁问题 -- 锁附加唯一性 -- 给每个客户端设置…

【嵌入式linux开发】智能家居入门6:最新ONENET,物联网开放平台(QT、微信小程序、MQTT协议、ONENET云平台、旭日x3派)

智能家居入门6:最新ONENET物联网开放平台 前言最终现象一、ONENET云平台创建产品与设备二、使用MQTT客户端软件测试2.1 测试前的准备2.2 测试 三、LInux QT代码四、onenet 云端API介绍及微信小程序代码4.1 onenet API介绍4.2 微信小程序代码 五、板端运行 前言 ONE…

LeetCode 热题100-24

回文链表 给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。 示例 1: 输入:head [1,2,2,1] 输出:true示例 2: 输入&#xff…

四层负载企业实战

通过四层负载LVSkeepalived将请求转发到nginx代理服务器。通过代理服务器访问后端真实应用服务。 拓补图: 准备环境6台机器; lvskeepalived---两台 nginx代理 ---两台 tomcat----一台 php ----一台 所有机器关闭防火墙和selinux 所有机器解析如下…

APP安全检测报告内容详解

一、APP安全检测的必要性 APP安全检测是确保移动应用安全的重要一环。在开发过程中,由于技术、人员和管理等方面的原因,APP可能存在各种安全漏洞和风险。这些漏洞一旦被黑客利用,可能导致用户数据泄露、恶意代码注入、应用被篡改等严重后果。…

Windows下使用QT5.14.2编译MySQL8.0对应的最新64位驱动程序步骤

不得不说mysql更新的速度是真的快,最近一两年都更新了好几个的小版本了。如果安装了高版本的 mysql软件,低版本的驱动就不支持了,因此需要重新使用QT来编译对应的mysql驱动。具体办法如下: 1、官网下载最新的mysql8.0安装包。下载…

day04--js的综合案例

1.1 商品全选 需求&#xff1a;商品全选 1. 全选 &#xff1a;点击全选按钮,所有复选框都被选中 2. 全不选 &#xff1a;点击全不选按钮,所有复选框都被取消选中 3. 反选 &#xff1a; 点击反选按钮,所有复选框状态取反 <!DOCTYPE html> <html lang"en">…

智慧校园云平台电子班牌系统源码,智慧教育一体化云解决方案

智慧校园云平台电子班牌系统&#xff0c;利用先进的云计算技术&#xff0c;将教育信息化资源和教学管理系统进行有效整合&#xff0c;实现生态基础数据共享、应用生态统一管理&#xff0c;为智慧教育建设的统一性&#xff0c;稳定性&#xff0c;可扩展性&#xff0c;互通性提供…

利用PDAL库实现Las文件向PLY文件的转换

1、官网的下载链接 PDAL&#xff08;Point Data Abstraction Library&#xff09;是一个开源的C库&#xff0c;专门用于处理三维点云数据。它提供了数据读取、转换、过滤、统计分析等多种功能&#xff0c;支持多种数据格式&#xff0c;如LAS、LiDAR、ASCII等。在IT行业中&…