构建跨平台的客户端界面

原文链接

欢迎大家对于本站的访问 - AsterCasc

前言

带有界面的跨平台客户端解决方面还是不少的,主要服务于LinuxIOSAndroidWindows甚至Web,比如Qt。但是众所周知Qt在移动端表现比较差,其他的解决方案也各有优缺点,这里我们使用较新的 Compose Multiplatform + Kotlin 作为我们的跨平台客户端解决方案,该种方案的使用可以参考官方示例项目

我们这里以Winodows+Android作为目标平台举例

下载

Android Studio,注意,目前2023-12-05在中文条件下?hl=zh-cn进入网页是拿不到最新的版本2023.1.1的。我们需要修改到英文环境?hl=en拿到,可能由于新版的汉化还没有完成

JDK,推荐使用17的,如果是有特殊需求也可以选择11或者8

Kotlin,这个Android Studio自带的,在Tools->Kotlin->Configure Kotlin Plugin Updates确认是否是最新版本即可

项目初始化

Kotlin Multiplatform wizard下载指定配置的脚手架代码

修改JDK版本

build.gradle.kts中,修改jvmTarget = "17"sourceCompatibility = JavaVersion.VERSION_17以及targetCompatibility = JavaVersion.VERSION_17,同时确认File->Setting->Build, Exception, Deployment->Build Tools->Gradle中和File->Project Structure中的JDK版本是否正确

修复多平台实验性功能导致actual关键字报错

虽然根据IDEA New Project Wizard, Compose Multiplatform这个issue,开发者指出

It is kept for purpose. This warning doesn’t impact work anyhow, but users should be aware, that MPP is experimental at the moment.

但是这个报错非常影响开发观感,所以我们这里增加跨平台编译选项来消除这个报错,在build.gradle.kts中添加

//...
kotlin {
    tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
        compilerOptions.freeCompilerArgs.add("-Xmulti-platform")
    }    
    //...
}

修复重复内容根警告

duplicate content roots detected,产生的原因是模块被重复引用。在我们的项目中体现在sourceSets["main"].resources.srcDirs("src/androidMain/res"),正常情况下,我们需要修改项目的包装引用结构来修复这个问题。但是如果我们的项目中不涉及共享资源那么直接把这行删掉即可,如果涉及,这里还有个奇技淫巧,就是创建软链接,Linux创建软链接就不谈了,下面给出Windows创建软链接

androidMain/res/drawable下执行mklink /d ".\resources" "..\..\..\commonMain\resources"即可将公共目录下资源文件映射到安卓目录,此时再将sourceSets["main"].resources.srcDirs("src/commonMain/resources")修改为sourceSets["main"].resources.srcDirs("src/androidMain/res/drawable/resources")即可

启动

Android的正常启动,没什么好说的

这里当前2023.1.1Android Studio版本Windows启动会报错Cannot locate tasks that match ':composeApp:compileJava' as task 'compileJava' is ambiguous in project ':composeApp'.,目前没有找到原生的特别好的解决方案,两个选择,要么桌面版使用IDEA启动,但是IDEA对安卓不友好,如果要启动两个编辑器的话还是挺烦的。要么,使用命令行./gradlew :composeApp:run启动,Run->Edit Configurations->Add new Configuration->Shell Script->Script path->Browse->Project Dictory->gradlew,再在Script options中填入:composeApp:run即可

添加库

最好引用跨平台库,这样我就不需要对于平台实现分别处理减少开发量,跨平台的库的选择可以参考:

发布

桌面

在基本配置下,进行原生平台的发布配置,基础配置示例如下:

compose.desktop {
    application {
        mainClass = "MainKt"
        
        nativeDistributions {
            targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb)
            packageName = "TestSoftware"
            packageVersion = "1.0.0"
        }
    }
}

直接运行命令./gradlew :composeApp:package就会自动下载平台相关依赖进行发布流程,最后会得到一个TestSoftware-1.0.0.msi的安装包,当然你这里也可以选择TargetFormat.exe的方式进行发布。如果测试在运行时候少包,发生ClassNotFoundException的问题,那么如果对于文件大小要求不严格,直接添加includeAllModules=truenativeDistributions中以支持所有模块的包含。如果大小要求严格那么只能通过modules("java.sql")一类的方法指定相关模块

还可以配置相关元数据,比如描述,版本、发行、图标等

        nativeDistributions {
            targetFormats(TargetFormat.Dmg, TargetFormat.Exe, TargetFormat.Deb)
            packageName = "ASCYDoorM"
            packageVersion = "1.0.0"
            description = "Aster Casc Yuno Door Multiplatform App"
            copyright = "astercasc.com. All rights reserved."
            vendor = "Aster Casc"

            windows{
                menuGroup = "ASCYDoorM"
                iconFile.set(project.file("head.ico"))
            }
        }

更多相关内容,比如混淆、压缩或者其他平台特定功能属性等,参考Native distributions and local execution

或者可以使用其他发行方式,比如Conveyor

安卓

这个没啥好说的,和普通的安卓发布流程一样,参考Android Publish

项目参考

原文链接

欢迎大家对于本站的访问 - AsterCasc

  • 16
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Delphi XE10是一种集成开发环境(IDE),可用于创建跨平台的应用程序。跨平台三层http是指在Delphi XE10中使用三层架构进行跨平台的http通信。 三层架构是一种软件设计模式,将软件系统划分为三个层次:表示层、业务逻辑层和数据访问层。在跨平台的应用开发中,三层架构可以帮助开发人员将应用程序的逻辑和数据访问与UI(用户界面)分离,以便在不同的平台上进行部署和使用。 Delphi XE10提供了强大的组件和工具,可以轻松地实现跨平台的http通信。通过Delphi XE10的http组件,开发人员可以在应用程序中发送和接收http请求和响应。这使得应用程序能够与web服务器进行通信,并使用http协议获取和传输数据。 使用Delphi XE10的跨平台三层http通信,开发人员可以方便地在不同的平台上开发和部署应用程序,无论是在Windows、Mac还是移动设备上。由于Delphi XE10的http组件具有高度可定制性和灵活性,开发人员可以根据自己的需求进行扩展和定制,以实现更复杂的http通信功能。 总之,Delphi XE10提供了跨平台三层http通信的解决方案,为开发人员在各种平台上创建功能强大的应用程序提供了便利。无论是进行数据传输还是与web服务器进行通信,Delphi XE10的强大功能和易用性为开发人员提供了更好的开发体验。 ### 回答2: Delphi XE10是一款强大的集成开发环境(IDE),可以用于跨平台开发。它支持多个操作系统,包括Windows、Mac、iOS和Android等,并且可以轻松实现跨平台的HTTP通信。 跨平台三层HTTP是一种常见的应用架构模式,用于在客户端和服务器之间通过HTTP协议进行通信。它将应用程序分为三层:表示层、业务逻辑层和数据存储层。 表示层负责呈现用户界面,并与用户进行交互。Delphi XE10提供了丰富的用户界面设计工具,可以使用可视化方式设计跨平台界面,并实现与用户的交互操作。 业务逻辑层是应用程序的核心,负责处理业务逻辑和数据处理。Delphi XE10内置了强大的编程语言和框架,可以轻松实现业务逻辑的处理和数据管理。开发人员可以使用Delphi XE10提供的组件和功能,编写业务逻辑代码,并进行数据处理和操作。 数据存储层负责管理和存储数据。Delphi XE10支持多种数据库连接,可以轻松实现与不同数据库的数据交互。开发人员可以使用Delphi XE10提供的组件和工具,连接到数据库,并进行数据的读取、写入和管理。 总结来说,Delphi XE10是一款强大的跨平台开发工具,可以实现三层HTTP架构模式。它提供了丰富的界面设计工具、强大的编程语言和框架,以及灵活的数据库连接功能,使开发人员可以轻松构建跨平台的应用程序,并实现与服务器的HTTP通信。 ### 回答3: Delphi XE10是一种集成开发环境(IDE),用于创建跨平台应用程序。它支持创建三层架构的应用程序,并可以使用HTTP协议进行数据传输。 跨平台三层意味着应用程序的架构被分为三个层次:表示层、业务逻辑层和数据访问层。在Delphi XE10中,开发人员可以使用不同的界面设计工具创建用户界面,例如FireMonkey和VCL。这些界面可以在不同的操作系统上运行,例如Windows、iOS和Android。 业务逻辑层是应用程序的核心部分,用于处理业务逻辑和数据处理。通过使用Delphi XE10的对象导向编程语言,我们可以编写适应不同平台的代码逻辑,以便应用程序在各个平台上都能正常运行。 数据访问层负责与数据库进行交互,从中读取和写入数据。Delphi XE10支持许多数据库引擎,例如MySQL、SQLite和Oracle。通过使用Delphi XE10提供的数据访问组件,开发人员可以轻松地建立与数据库的连接,执行查询和更新数据。 在跨平台三层架构中,HTTP协议用于实现不同层之间的数据传输。开发人员可以使用Delphi XE10提供的HTTP客户端组件进行数据的发送和接收。这种方式可以在不同的平台上实现数据的交换,使得应用程序能够跨平台运行。 总的来说,Delphi XE10支持开发跨平台的三层架构应用程序,并提供了HTTP协议进行数据传输。这使得开发人员能够在不同的操作系统和平台上创建功能强大的应用程序,并能够方便地处理业务逻辑和与数据库的交互。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值