首页
学习
活动
专区
工具
TVP
发布

KMM跨平台开发入门,看这一篇就够了~

他们的成就主要都是UI上跨平台,当然Flutter虽然可以处理一些公共的业务逻辑,但目前在业务较重的情况下仍然需要各自处理。  ...通过KMM开发者可以 iOS 和 Android 应用程序之间共享通用代码,并仅在必要时编写特定于平台的代码。 ...上面官方的描述说了这么,简单的来说就是KMM注重业务逻辑跨平台,和Flutter、Compose完全相反。即使如此,在这个都想着跨别人的年代,KMM也称自己并没有说过不会做UI的跨平台...... Kotlin Multiplatform 中,共享模块中的不同源集可以针对不同的平台。 如下图所示。 支持多个目标的平台库,可以公共源集 commonMain 中使用。...可以使用 CocoaPods 或其他依赖管理器的原生 iOS 项目和使用 Gradle 的 Android 项目中使用。

4.2K20

Compose 跨平台现状

Compose 能应用于跨平台,主要是基于 KMM 架构,KMM 的介绍可以查看官方文档《Get started with Kotlin Multiplatform Mobile[1]》,我们来看下 KMM...的简单架构: commonMain 为通用层模块,也可以被称为平台无关层,如果 commonMain 涉及到平台相关操作的话,则需要定义 expect 方法,让 xxxMain 模块去 actual...实现这个方法,这样,不同的平台集成 KMM 时就可以实现各自平台的效果。...从 KMM 架构可以看出,一些通用的逻辑计算完全可以丢进 commonMain 来实现,以此来达到各端只维护一份代码的目的,也算是提效了。...我觉得,如果有一款能直接让客户端的编程语言(kotlin、swift)直接实现跨端,而不是再学习一款新的语言(dart) 来实现平台开发,那真是一件美好的事情。

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

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

,不会涉及跨平台的底层原理,比如为什么可以平台这些深奥的道理。...KMM更像是营销术语,我们不用纠结Mobile这个词,你要知道的是,下文我们所说的KMM就是指的Kotlin平台不仅限于移动端就行了。 KMM可以简化平台应用程序的开发。...公共业务逻辑 双端完全可以共用的逻辑我们直接放在commonMain文件夹下即可。开源库的依赖我们写在commonMain目录下。...这样我们就确保平台下使用同一API来调用,调用方不需要关注具体的实现。...那么到这里呢,KMM我们就了解的差不多了,从上面的了解可以看出 其实KMM当前是可以使用在实际项目中的,不过我们可以再等等,Kotlin的RoadMap中说今年会发布正式版本,我们可以一起期待一下。

34310

KotlinNative KMM项目架构

Kotlin Multiplatform Mobile ( KMM ) 是一个 SDK,旨在简化跨平台移动应用程序的创建。... KMM 的帮助下,您可以 iOS 和 Android 应用程序之间共享通用代码,并仅在必要时编写特定于平台的代码。...[项目结构.png] 三、使用expect/actual编写平台特定的代码 以打印日志为例,打造一个alog日志SDK commonMain定义IALog接口,声明fun v函数,其他函数忽略。...好处是通常一些SDKcommonMain中会定义一套公共接口,有时候Android或iOS有一些独有接口,就可以用这种方式声明。同理data class也是可以这样使用。...上面说到的第1点本地构建,iosApp本地依赖构建sdkframework时,要将依赖正确导入 Kotlin/Native 模块,Podfile必须包含use_modular_headers!

3K00

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

所以我们为什么不只写一次业务逻辑代码,不同的平台上共享呢? 有了这个想法之后,Jetbrains 带来了 Kotlin Multiplatform Project 。...借助 Kotlin 的 跨平台能力,你可以使用一个工程为多个平台编译。 使用 KMM,具备灵活性的同时也保留了原生编程的优势。...写这篇博客的同时,KMM 仍然处于 Alpha,你可以开始尝试在你的应用中共享业务逻辑代码。 移动开发领域,KMM 目前没有为大众所熟知。... “Select a project Template” 页面,选择 “KMM Application” 。 设置工程名称,最低 SDK,文件目录,名等。...译者说 已经一片红海的移动端跨平台开发领域,Kotlin 另辟蹊径,让你可以继续使用平台原生方式开发 UI,在业务逻辑上做到 “Write once,run everywhere”。

1.8K20

Kotlin 推出新功能:无需同时了解 Kotlin 和 JavaScript

Kotlin 2017 Google 发表声明后总被当成是安卓专用开发语言,但实际上,Kotlin 正在积极地向平台语言演进,即“通用型语言”。...而 Kotlin 社区也紧跟着这样的趋势发展,出现了愈来愈多的库、框架来支持平台,如 Arrow、Okio、Apollo 等新版本中都支持了平台开发。...如果 Compose for Web(Android 上使用的平台版 Jetpack Compose)能够用 Kotlin/Wasm 代替 Kotlin/JS 来完美执行基于 Canvas 的像素渲染...别担心,面向 WebAssembly 的标准化管理项目 Warg,有望带来各种 repo 实例,其中的关键就是 WebAssembly repo 将支持多语言。...有趣的是,只需要提供 WASI 平台中的特定部分,就能使用 Kotlin平台库(例如 kotlinx-datetime 或 Okio)。

1.4K20

Kotlin Multiplatform Mobile 进入 Beta 测试

实验阶段,JetBrains 尝试了多种内存管理、库和项目配置方法,进一步平衡了跨平台特性,包括网络、数据存储和分析,以及对原生 SDK 的访问。...作为采用就绪的信号,JetBrains 特别强调了其不断增长的平台库生态系统、社区支持,尤其是一些早期采用者的案例研究,包括 Autodesk、VMware、Netflix 等。...它提供了一组 Gradle 文件中使用的指令,包括新的 targets (支持 iOS、watchOS 和 tvOS 平台)、sourceSet、compilation 等。...如果你喜欢不同的方法,也可以使用 Kotlin Multiplatform 创建跨平台库,然后独立的 iOS 和 Android 项目中使用这些库。...Htmx意外走红,我们从React“退回去”后:代码行数减少 67%,JS 依赖从 255 下降到 9

1.2K20

开源 | 从 SQLlin 的更新看 Kotlin Multiplatform 技术更迭

最后我们来看一下 nativeMain 下的源码结构: cinterop 包包含所有对 SQLite C 函数直接互操作的代码,通过单独的将其与其它代码隔离;platform 则存放所有待平台实现的相关代码...但由于 Compose Multiplatform 最初支持的平台便是 Android 与 JVM,因此吸引了大量 Kotlin Multiplatform 开发者将自己的平台应用的支持范围扩展到 JVM... Kotlin/Native 的旧内存模型中,对象是不能直接跨线程访问的,必须要手动进行对象子图分离和再绑定操作,对象才能将自己的所有权转移到另一个线程,这种设计其实是强制开发者在编译期就保证对象同一时刻只能被一个线程访问...例如,如果我们只 macOS机器上执行单元测试,可以保证平台无关代码(sqllin-dsl、sqllin-processor、sqllin-driver(commonMain))以及 macOS 平台相关代码...希望未来 SQLlin 可以携程机票及整个 Kotlin Multiplatform 技术社区中有更广泛的应用场景。

12510

Kotlin 1.4 现已发布,专注于质量和性能

我们还引入了一个灵活的新 Kotlin Project Wizard。这个新向导为您提供了一个创建和配置不同类型的 Kotlin 项目的地方,即使使用更复杂的结构(例如平台项目),也可以轻松上手。...无论您是针对单一平台还是平台目中工作,在任何 Gradle Kotlin目中,都不再需要声明与 stdlib 的依赖关系。从 Kotlin 1.4.0 开始,此依赖关系默认添加。...Kotlin Multiplatform 让 Kotlin 成为出色的平台解决方案是我们的首要任务之一。...您可以使用在多个原生目标之间共享的通用代码中与平台相关的库。 您可以共享源集中仅指定一次依赖,而不是共享和平台专用源集中同一库的不同变体上指定依赖。...我们继续开发 Kotlin 库格式 Klib,这种格式在后台用于共享平台库。

1.8K30

滴滴开源的APM方案Dokit接入

【文件同步助手】 通过终端服务,让你的终端空间平台端完整的展现并提供强大的文件以及数据库操作能力。...thresholdTime 10 //调用栈函数入口 千万不要用我默认的配置 如果有特殊需求修改成项目中自己的入口 假如不需要可以去掉该字段...千万不要用我默认的配置 如果有特殊需求修改成项目中自己的项目名 假如不需要可以去掉该字段 packageNames = ["com.didichuxing.doraemondemo..."] //不需要针对函数插装的名&类名 千万不要用我默认的配置 如果有特殊需求修改成项目中自己的项目名 假如不需要可以去掉该字段 methodBlacklist...所以无法通过原先的配置拿到配置信息,只能通过全局的gradle.properties中的配置可以拿到。 tips: 当修改完DoKit插件的相关配置以后一定要clean一下重新编译才能生效。

1.1K20

Kotlin 1.2 的新增了哪些特性?

平台项目 (实验性) 平台项目是 Kotlin 1.2 中的一个新的实验性功能,允许你 Kotlin – JVM, JavaScript 和(将来的)Native 上所支持的目标平台之间重用代码。...平台目中,你有三种模块: 一个通用(common)的模块 —— 包含非特定于任何平台的代码,以及不附带依赖于平台的 API 实现的声明。...在为特定平台编译平台项目时,会生成通用及特定平台相关部分的代码。 平台项目支持的一个关键特性是可以通过 expected 以及 actual 声明来表达通用代码对平台特定部分的依赖关系。...弃用:枚举中的嵌套类型 枚举中,由于初始化逻辑中的问题,定义一个不是内部类的嵌套类型的功能已经被弃用。 Kotlin 1.2 中这将会引起警告,并将在 Kotlin 1.3 中报错。...命令行中使用 -Werror,或使用以下的 Gradle 代码: ? 后话 看了这么的改变,我们是否就可以深入的学习Kotlin语言,不妨看看这边文章:Kotlin真的值得学习吗?

2.8K10

Kotlin 1.2 的新增特性

转自:开源中国 www.oschina.net/translate/whats-new-in-kotlin-12 平台项目 (实验性) 平台项目是 Kotlin 1.2 中的一个新的实验性功能,允许你...平台目中,你有三种模块: 一个通用(common)的模块 —— 包含非特定于任何平台的代码,以及不附带依赖于平台的 API 实现的声明。...在为特定平台编译平台项目时,会生成通用及特定平台相关部分的代码。 平台项目支持的一个关键特性是可以通过 expected 以及 actual 声明来表达通用代码对平台特定部分的依赖关系。...下面是一个示例: 通用代码中: JVM 平台中,代码如下所示: 详细信息请参考此文档,并按照步骤构建平台项目。...弃用:枚举中的嵌套类型 枚举中,由于初始化逻辑中的问题,定义一个不是内部类的嵌套类型的功能已经被弃用。 Kotlin 1.2 中这将会引起警告,并将在 Kotlin 1.3 中报错。

2.7K70

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

它解决了代码共享的两个常见问题,即对于所有目标平台的一个子集,仅需部分共享某些代码的需求,以及需要访问特定于平台的 API。...2022 年的一调查显示,Kotlin Multiplatform 应用程序的代码共享率高达 63% Kotlin Multiplatform 适用于非 GUI 代码,但有一个相关项目 Compose...Compose Multiplatform 桌面平台、macOS、Linux 和 Windows 上也是稳定版本,但在 iOS 上是 Alpha 版本, Web 上是实验性的。...JetBrains 还表示,他们的目标是 2024 年发布面向 iOS 的 Compose Multiplatform 测试版本,Kotlin/Wasm 也积极开发中。...去年,谷歌通过 引入 其他一些 Jetpack 库的“实验预览”,表达了对 Kotlin Multiplatform 的一些支持,这些库不是用于生产的,而是用于“针对 Android 和 iOS 应用程序的平台目中使用这些

14020

Kotlin Symbol Processing (KSP) Alpha 版现已发布

KSP 提供的功能类似于 KAPT,但速度提高了 2 倍,可以直接访问 Kotlin 编译器功能,并且开发时充分考虑到了平台兼容性。 KSP 兼容 Kotlin 1.4.30 及更高版本。...您可以 KSP GitHub repo 中查看开放源代码和文档。 为何推出 KSP? Kotlin 开发者向我们反馈最多的需求就是提高构建速度。...诸如 Room 等注释处理器 Android 平台无处不在,它们依赖于通过 Kotlin 注释处理工具 (KAPT) 实现的 Java 注释处理兼容性。...您可以从中获得: 库: 将构建器模式作为 KSP 处理器实现的小型 test-processor 库 使用项目: 显示如何在实际 Kotlin目中使用构建器处理器的 workload 目录 实现构建器的所有逻辑全部位于...自去年 6 月的开发者预览版发布以来,我们已经解决了超过 100 错误和问题,其中数十都来自优秀的 Kotlin 库开发者社区的反馈。

1K20

为什么除了Flutter之外,我们还需要另一个跨平台开发框架?

说到这里,为什么要把 Compose for Android 扩展到多种其他平台之上?“Compose 的目标受众主要分为三类。...首先是使用 Kotlin 与 Compose 的 Android 开发人员,他们希望把自己的开发成果交付至其他平台;其二是纯 Kotlin 开发人员,他们希望以‘一次编写、随处运行’的方式开发新的应用程序...“因此我们提供预览机制,您可以 composable 函数上添加注释,并在无需运行应用程序的前提下快速预览。”...写在最后 那么,为什么除了 Flutter 之外,我们还需要另一个跨平台框架?...更重要的是,Compose 的发展势头颇为强劲——其 GitHub repo 拿下 5000 多个星,上报问题的数量也非常

1K20

Java 近期新闻:Payara Platform 2022 路线图、OpenJDK JEP 草案、Gradle 7.4

Hibernate 通往 1.0 版本的道路上,JReleaser(一种简化项目发布创建的 Java 工具)的第三个早期访问版本发布,其中包括一个针对创建 GitHub“桶”库的修复,尽管事实上 remoteBuild...Kotlin 通往 Kotlin 1.6.20 的道路上,第一个里程碑版本发布,它提供的预览特性包括:通过 JVM IR 后端单个模块的并行编译缩短构建时间;通过 Kotlin/JS IR 的增量编译缩短开发时间...;通过多平台项目的分层结构改善代码共享;以及通过 Kotlin/Native 改善性能。...该工具以前是 Apache Lucene 的一个子项目,这个最新版本包括依赖安全升级以及 Apache POI 升级到 5.2.0。要了解更多细节信息,请查看发布说明。...自 2001 年以来,他一直是花园州 Java 用户组(原 ACGNJ Java 用户组)的主持人,同时也是一位经验丰富的会议发言人,加入 InfoQ 之前与 Barry Burd 合作撰写了篇文章

75220

8年Android老码农现身分享:一个月面试6家大厂屡败屡战,那些面试学习上走过的弯路

; 怎样给RecyclerView加header和footer,为什么可以这样; RecyclerView如何实现复杂布局; 算法:一个整型数组中,只有两个数出现一次,其余均出现两次,找出这两个数,给出时间复杂度...需要我们具备深厚的代码功底,这就是代码的基础,如:数据结构达到可以根据应用场景写出符合当前场景的特殊结构,比如google针对Android平台特征研发了SparseArray代替HashMap.另外,...还有就是git的使用也可以帮助我们管理好我们的代码,这个非常关键,因为这个工具可以让我们修改的代码不会因为错误操作而导致丢失。另外,对移动开发者我们至少需要知道如何抓取网络。...其中,最常用的stetho就是一个非常好用的可以抓取网络的工具。...(3)对自己的职业生涯要有一个规划,以后要做哪一块一定要有自己的想法,确定了就要从这个方向完善自己,练。

74100

Kotlin 1.2 新特性

要从通用模块中调用特定于平台的代码,可以指定所需的声明:所有特定于平台的模块需要提供实际实现声明。而在为特定平台编译平台项目时,会生成通用及特定平台相关部分的代码。...请注意,目前跨平台项目只是一个实验性功能,这意味着该功能已经可以使用,但可能需要在后续版本中更改设计 编译性能 1.2的开发过程中,团队花了很多精力来优化编译系统,据官方提供的资料显示,与Kotlin...延迟初始化属性检测 通过访问属性的isInitialized字段,现在开发者可以检查一个延迟初始化属性是否已经初始化。...弃用 Kotlin1.2版本也弃用了很多不合理的东西。 弃用:枚举条目中的嵌套类型 枚举条目中,inner class由于初始化逻辑中的问题,定义一个非嵌套的类型已经被弃用了。...标准库 Kotlin标准库与拆分包 Kotlin标准库现在完全兼容Java 9模块系统,该系统禁止拆分包(多个jar文件同一个中声明类)。

1.6K100
领券