首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

KotlinNative KMM项目架构

KMM用纯Kotlin编写一次代码,即可在iOS和Android上运行,开发应用公共业务逻辑只需要编写一次。KMM减少了为不同平台编写和维护相同代码所花费时间。...[项目结构.png] 三、使用expect/actual编写平台特定代码 以打印日志为例,打造一个alog日志SDK 在commonMain定义IALog接口,声明fun v函数,其他函数忽略。...五、声明Android/iOS公共接口以及独有接口 用expect修饰commonMain中声明公共接口 expect interface IALog { fun v(tag: String,...第2种方案业务接入更加简单,跟iOS原生开发SDK一样,无需KMM环境,主要问题是各个业务依赖klib版本不一致,导致构建sdkframework多个版本,这时需要用不同分支构建不同业务sdkframework...iosArm64() targets { configure(listOf(iosX64, iosArm64)) { binaries.withType(org.jetbrains.kotlin.gradle.plugin.mpp.Framework

3.1K00

Hello World —— 使用 Kotlin 开发跨平台应用

所以我们为什么不只写一次业务逻辑代码,在不同平台上共享呢? 有了这个想法之后,Jetbrains 带来了 Kotlin Multiplatform Project 。...但是,为了在 Android/iOS 上实现同样逻辑,有时候你不得不写两份版本特定代码,例如蓝牙,Wifi 等等。为了处理这种情况,Kotlin 提供了 expect/actual 机制。...例如你可能想知道你应用是运行在 Android 还是 iOS 设备,并且得到设备具体型号。为了完成这个功能,你需要使用 expect/actual 关键字。...注意,如果你使用了 expect,你必须提供对应名称 actual 实现。...否则,你会得到如下错误: ➡️ Expect/Actual 使用 commonMain expect class Platform() { val platform: String } androidMain

1.9K20
您找到你想要的搜索结果了吗?
是的
没有找到

Kotlin Vocabulary | 类型别名 typealias

: 如果在代码中出现了来自不同相同类名,可以使用导入别名来消除这样歧义: import io.plaidapp.R as appR import io.plaidapp.about.R 复制代码...Kotlin 提供了 "实际声明" (actual declarations) 和 "预期声明" (expected declarations) 机制来简化这种操作。...在公共代码中声明接口为预期声明,使用 expect 关键字;在相应平台代码中扩展为实际声明,使用 actual 关键字。...如果平台代码中已经实现了公共代码中某个接口,并且所有期望方法签名一致时,您可以使用类型别名将实际声明类型名称映射到期望类型上: expect annotation class Test actual...因此,您不应该依赖类型别名做编译类型检查,而应该使用一个不同类型或者内联类。

72610

初窥 Kotlin 1.2 跨平台特性

图中 expect 表示就是 Common Lib 中有些需要依赖平台相关特性地方,例如刚才说到 Date,是平台相关特性,在跨平台标准库当中没有提供,可是我想在跨平台代码中用它呀: inline...Jvm 版本 Date: actual class Date { private val jvmDate = java.util.Date() actual fun getTime()...= jvmDate.time } 与 expect 相对actual,这就是在 Jvm 上面实现版本了。...Js 版本 Date: actual class Date { private val jsDate = kotlin.js.Date() actual fun getTime() =...小结 Kotlin 本身可以编译到不同平台,所以要解决代码在不同平台编译,要解决就是: 平台无关标准库 平台相关 Api 自定义 相信通过阅读本文,大家就可以对这个概念有所了解了。 ----

58310

JetBrains 发布了 Kotlin Multiplatform 首个稳定版本

Kotlin Multiplatform 中 ExpectActual,解决了调用本机平台 API 需求 本机 API 问题是通过预期声明和实际声明机制来解决。...expect 关键字将声明标记为将与用actual关键字标记代码匹配,actual关键字可能是特定于平台。...JetBrains 建议仅对平台 API 使用 expect/actual,其他情况使用普通接口。...2022 年一项调查显示,Kotlin Multiplatform 应用程序代码共享率高达 63% Kotlin Multiplatform 适用于非 GUI 代码,但有一个相关项目 Compose...使用 Kotlin 而不是 Java 另一个原因是它语言特性,包括 lambda 表达式、扩展函数、类型推理、null 安全等等。Kotlin 没有检查异常,因为这些不会提高生产力或代码质量。

20520

谷歌社区说|聊聊Compose跨平台与KMM

KMM是什么 KMM全称是Kotlin Multiplatform Mobile,与之对应是KMP—Kotlin Multiplatform Project,其实就是一个是Kotlin移动端跨平台,...我始终觉得有一个尴尬问题就是,要说Compose Multiplatform与KMM不是一个东西吧,他们确实不是一个东西,毕竟版本更新、维护者都不同。...expectactual 我们要依赖Kotlinexpectactual关键字。expect是我们期望实现方式,actual是实现方式,有点类似接口与实现类。...首先我们要在commonMain中使用expect定义这个接口 然后我们在shares模块下androidMain、iOSMain目录下各自实现打开蓝牙方法。...好在Kotlin在1.8.20版本中推出了Kotlin/Wasm,最新Compose for Web 是基于Kotlin/Wasm,当前处于试验阶段。

73910

JetBrains 又出了款新神器,一套代码适应多端

,支持使用 Kotlin 编写响应式 Web UI。...它可简化并加快 Android 上界面开发。使用更少代码、强大工具和直观 Kotlin API,快速让应用生动而精彩。...Text(greeting) } } Result: Servus 使用 Compose for Web 构建用户界面 借助 Compose for Web,开发者通过使用 Kotlin...可组合 DOM API 通过 DOM 元素和 HTML 标签表达设计和布局 使用类型安全 HTML DSL 构建 UI 表示形式 通过使用类型安全 CSS DSL 创建样式表来完全控制应用程序外观...} } } 具有 Web 支持多平台小部件 通过利用 Kotlin Expect-actual 机制来提供特定于平台实现,从而使用和构建可在 Android、桌面和 Web 上运行

64720

IDEA 公司,又出新神器,一套代码适应多端!

,支持使用 Kotlin 编写响应式 Web UI。...它可简化并加快 Android 上界面开发。使用更少代码、强大工具和直观 Kotlin API,快速让应用生动而精彩。...Text(greeting) } } Result: Servus 94_2.png 使用 Compose for Web 构建用户界面 借助 Compose for Web,开发者通过使用 Kotlin...可组合 DOM API 通过 DOM 元素和 HTML 标签表达设计和布局 使用类型安全 HTML DSL 构建 UI 表示形式 通过使用类型安全 CSS DSL 创建样式表来完全控制应用程序外观...} } } 94_3.png 具有 Web 支持多平台小部件 通过利用 Kotlin Expect-actual 机制来提供特定于平台实现,从而使用和构建可在 Android、桌面和

85520

干货 | 携程机票 App KMM 跨端生产实践

JetBrains 提出了不同于 RN 与 Flutter 跨端解决方案,即使用不同编译器编译同一份代码生成各端不同产物来达到跨平台目的,这就是 Kotlin Multiplatform。...Kotlin 依据其运行平台不同拥有不同名字,例如编译为 class 字节码运行于 JVM 及 Android 平台称为 Kotlin/JVM,编译为原生二进制码无虚拟机环境直接运行于操作系统上则称为...我们先在 common source set 中定义抽象 MMKV 类型: expect class MMKV 当然它是待实现,我们希望它在 Android 平台直接表示 Java MMKV...接着使用一些顶层函数来桥接 MMKV 静态函数,用扩展函数来桥接 MMKV 在不同平台成员函数,Android 如下: internal actual fun defaultMMKV(): MMKV...参考链接 【1】Kotlin 多平台官方介绍 https://kotlinlang.org/docs/mpp-intro.html 【2】MMKV https://github.com/Tencent/

3.3K10

JetBrains 又出了一款新神器,一套代码适应多端!

,支持使用 Kotlin 编写响应式 Web UI。...它可简化并加快 Android 上界面开发。使用更少代码、强大工具和直观 Kotlin API,快速让应用生动而精彩。...赶紧检查下代码里有没有脏话... 2、使用 Compose for Web 构建用户界面 借助 Compose for Web,开发者通过使用 Kotlin 并应用 Jetpack Compose 概念和...可组合 DOM API 通过 DOM 元素和 HTML 标签表达设计和布局 使用类型安全 HTML DSL 构建 UI 表示形式 通过使用类型安全 CSS DSL 创建样式表来完全控制应用程序外观...具有 Web 支持多平台小部件 通过利用 Kotlin Expect-actual 机制来提供特定于平台实现,从而使用和构建可在 Android、桌面和 Web 上运行 Compose 小部件

54420

IDEA 又出新神器,一套代码适应多端!

,支持使用 Kotlin 编写响应式 Web UI。...它可简化并加快 Android 上界面开发。使用更少代码、强大工具和直观 Kotlin API,快速让应用生动而精彩。...Text(greeting)     } } Result: Servus 94_2.png 使用 Compose for Web 构建用户界面 借助 Compose for Web,开发者通过使用 Kotlin...可组合 DOM API 通过 DOM 元素和 HTML 标签表达设计和布局 使用类型安全 HTML DSL 构建 UI 表示形式 通过使用类型安全 CSS DSL 创建样式表来完全控制应用程序外观...}     } } 94_3.png 具有 Web 支持多平台小部件 通过利用 Kotlin Expect-actual 机制来提供特定于平台实现,从而使用和构建可在 Android、桌面和

48210

IDEA 公司,又出新神器,一套代码适应多端!

,支持使用 Kotlin 编写响应式 Web UI。...它可简化并加快 Android 上界面开发。使用更少代码、强大工具和直观 Kotlin API,快速让应用生动而精彩。...Text(greeting) } } Result: Servus 94_2.png 使用 Compose for Web 构建用户界面 借助 Compose for Web,开发者通过使用 Kotlin...可组合 DOM API 通过 DOM 元素和 HTML 标签表达设计和布局 使用类型安全 HTML DSL 构建 UI 表示形式 通过使用类型安全 CSS DSL 创建样式表来完全控制应用程序外观...} } } 94_3.png 具有 Web 支持多平台小部件 通过利用 Kotlin Expect-actual 机制来提供特定于平台实现,从而使用和构建可在 Android、桌面和

54030

JetBrains 又出了一款新神器,一套代码适应多端!

,支持使用 Kotlin 编写响应式 Web UI。...它可简化并加快 Android 上界面开发。使用更少代码、强大工具和直观 Kotlin API,快速让应用生动而精彩。 UI 代码和预览如下图所示: ?...赶紧检查下代码里有没有脏话... 2、使用 Compose for Web 构建用户界面 借助 Compose for Web,开发者通过使用 Kotlin 并应用 Jetpack Compose 概念和...可组合 DOM API 通过 DOM 元素和 HTML 标签表达设计和布局 使用类型安全 HTML DSL 构建 UI 表示形式 通过使用类型安全 CSS DSL 创建样式表来完全控制应用程序外观...具有 Web 支持多平台小部件 通过利用 Kotlin Expect-actual 机制来提供特定于平台实现,从而使用和构建可在 Android、桌面和 Web 上运行 Compose 小部件

26110

IDEA 新神器,一套代码,适应多端,舒服了!

,支持使用 Kotlin 编写响应式 Web UI。...它可简化并加快 Android 上界面开发。使用更少代码、强大工具和直观 Kotlin API,快速让应用生动而精彩。...Text(greeting) } } Result: Servus 94_2.png 使用 Compose for Web 构建用户界面 借助 Compose for Web,开发者通过使用 Kotlin...可组合 DOM API 通过 DOM 元素和 HTML 标签表达设计和布局 使用类型安全 HTML DSL 构建 UI 表示形式 通过使用类型安全 CSS DSL 创建样式表来完全控制应用程序外观...} } } 94_3.png 具有 Web 支持多平台小部件 通过利用 Kotlin Expect-actual 机制来提供特定于平台实现,从而使用和构建可在 Android、桌面和

43940

JetBrains 又出了一款新神器,一套代码适应多端!

,支持使用 Kotlin 编写响应式 Web UI。...它可简化并加快 Android 上界面开发。使用更少代码、强大工具和直观 Kotlin API,快速让应用生动而精彩。 UI 代码和预览如下图所示: ?...2 使用 Compose for Web 构建用户界面 借助 Compose for Web,开发者通过使用 Kotlin 并应用 Jetpack Compose 概念和 API 为 Web 构建响应式用户界面...可组合 DOM API 通过 DOM 元素和 HTML 标签表达设计和布局 使用类型安全 HTML DSL 构建 UI 表示形式 通过使用类型安全 CSS DSL 创建样式表来完全控制应用程序外观...具有 Web 支持多平台小部件 通过利用 Kotlin Expect-actual 机制来提供特定于平台实现,从而使用和构建可在 Android、桌面和 Web 上运行 Compose 小部件

49030

JetBrains 又出了款新神器,一套代码适应多端!

,支持使用 Kotlin 编写响应式 Web UI。...它可简化并加快 Android 上界面开发。使用更少代码、强大工具和直观 Kotlin API,快速让应用生动而精彩。 UI 代码和预览如下图所示: ?...使用 Compose for Web 构建用户界面 借助 Compose for Web,开发者通过使用 Kotlin 并应用 Jetpack Compose 概念和 API 为 Web 构建响应式用户界面...可组合 DOM API 通过 DOM 元素和 HTML 标签表达设计和布局 使用类型安全 HTML DSL 构建 UI 表示形式 通过使用类型安全 CSS DSL 创建样式表来完全控制应用程序外观...具有 Web 支持多平台小部件 通过利用 Kotlin Expect-actual 机制来提供特定于平台实现,从而使用和构建可在 Android、桌面和 Web 上运行 Compose 小部件

50720
领券