展开

关键词

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!

75000

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”。

30620
  • 广告
    关闭

    【玩转 Cloud Studio】有奖调研征文,千元豪礼等你拿!

    想听听你玩转的独门秘籍,更有机械键盘、鹅厂公仔、CODING 定制公仔等你来拿!

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

    Kotlin Multiplatform 实战记 | QCon

    1 为什么选择 Kotlin平台? 我先介绍一下我们团队的情况,交代清楚我们技术选型的背景。 Android 平台产物 aar,iOS 平台使用 Kotlin Native 编译,产物 framework 与平台无关的 common 逻辑可以跨更多的平台,如 Mac、Linux、Windows、 官方给出的基础结构是一个 commonMain 的代码,其他平台的代码依赖它(jvmMain、jsMain 等)。 commonMain 里定义好 expect fun,然后分别在 iosMain 和 androidMain 中实现 actual fun。 如果有多端业务开发的场景(常见于 B 端业务),逻辑层可以Kotlin 跨更多的平台,饿了么商家端和美团商家端就有在这个场景下使用。

    13310

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

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

    32530

    Kotlin 1.2 的新增了哪些特性?

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

    18210

    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 中报错。

    39670

    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 库开发者社区的反馈。

    42320

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

    TheRegister 就此事询问了 JetBrains 公司 Compose 项目负责人 Nikolay Igotti,希望了解为什么该公司拥有了已经广泛应用于 IntelliJ IDEA IDE 说到这里,为什么要把 Compose for Android 扩展到多种其他平台之上?“Compose 的目标受众主要分为三类。 “因此我们提供预览机制,您可以 composable 函数上添加注释,并在无需运行应用程序的前提下快速预览。” 写在最后 那么,为什么除了 Flutter 之外,我们还需要另一个跨平台框架? 想要进一步了解 Compose,国内 Android 开发者可访问以下链接查看中文手册:

    27140

    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 合作撰写了篇文章

    9620

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

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

    27800

    Kotlin 1.2 新特性

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

    439100

    使用 Kotlin Symbol Processing 1.0 缩短 Kotlin 构建时间

    其与 Kotlin 注解处理工具 (KAPT) 的功能相似,但速度提高了 2 倍,同时还可以直接访问 Kotlin 语言结构并支持多个平台目标。 KSP 还解锁了如生成 Kotlin 代码等全新可能性,这让 Room 将来会有更棒的 Kotlin 用户体验。 此举大幅提升了构建速度 (对于 Room 的 Kotlin 测试应用 而言速度提高了 2 倍),同时也意味着 KSP 可以非 Android 以及非 JVM 环境 (如 Kotlin/Native 和 处理器实现的小型 test-processor 库 使用库: 显示如何在实际 Kotlin目中使用构建器处理器的 workload 目录 如果您是应用开发者,请查看 支持库列表 以及 快速入门 指南 例如,要在 Gradle 模块中使用 KSP 版 Room,您只需将 KAPT 插件替换为 KSP 并替换 KSP 依赖: 您可以查看 Room 版本说明 以了解更多信息。

    14410

    新年 Flag 以及论坛的一个所谓 Kotlin 不完全兼容 Java 的问题

    曾经有一年我就是在这个时间憋出了一篇晦涩难懂的协程的文章,为了让更多小伙伴敢于尝试协程,今年需要在 Kotlin 协程上写点儿文章,也许也可以写点儿 lib,总之公众号在这一年的话题重点,协程算一个, 可以Kotlin 中自然地调用现存的 Java 代码 文档上这样说, 但是实际使用上 public class ApiException extends Exception { public 原帖结束 ---- 看到这个问题,突然觉得以前大家写 Java 代码,得是有乱,人家明明就已经有了 message,你再继承,再搞出一个来,到底是为什么呢。。。 } 这个与绝大多数合成属性的情况还不一样,如果是合成的属性,通常我们也可以直接访问对应的 get/set 方法。 这个访问的过程实际上也没有什么额外的开销,尽管看上去似乎用了反射,但根本不需要引入反射,实际上也不会通过反射进行访问

    46210

    Gradle Kotlin DSL指南

    可以依赖声明和configurations{}块中为配置名使用字符串字面量。 在这种情况下,IDE无法帮助你发现可用的配置,但你可以相应的插件文档或运行gradle依赖中查找它们。 应用插件 您可以它们所应用的子项目中声明插件,但我们建议您也根项目构建脚本中声明它们。这使得构建中保持插件版本的一致性变得更加容易。该方法还提高了构建的性能。 我们通常不建议使用这种方法,因为这会失去Kotlin类型检查的好处,并且会阻止ide提供尽可能的支持。 随着语言的成熟,这将不再是一个问题 Kotlin的编译器参数 这些是一个应用了Kotlin – DSL插件的项目中编译Kotlin DSL脚本和Kotlin源代码和脚本时使用的Kotlin编译器参数: (receiver, "parameters", 42, aReference) Copy Kotlin扩展函数是级函数,您可以Kotlin参考文档的级函数一节中了解如何定位声明给定Kotlin扩展的类型的名称

    45620

    IntelliJ IDEA 2022正式发布!这次打死我也不更了。。

    关键更新 依赖分析器 (Dependency Analyzer) 为了促进依赖管理和冲突解决,IntelliJ IDEA 实现了依赖分析器,它提供项目和子项目中使用的所有依赖(包括传递性依赖)的广泛信息 这个新功能允许轻松检测冲突的依赖关系并解决问题,比如可以过滤掉相同的依赖,并查看它们不同库中的存在,还可以快速浏览依赖,以正确构建配置。 ,来检测项目中使用的 Maven 和 Gradle 依赖中的漏洞。 ,现在都可以 IDE 中使用。 IDE 性能 优化了索引,大大提高了 IDE 执行代码完成、突出显示和与参考搜索等相关操作时的速度,代码更改后发生的重新索引案例的数量和范围也有所减少。

    82740

    Android平台的Swift—Kotlin

    [1.png] Kotlin为什么可以兼容Java,一个主要原因是Kotlin文件经过Kotlin编译器编译后会生成Java字节码。 生成的class文件打成jar后,最终可以生成Android的APK,或供Java服务端调用。 基于Kotlin/Native的一款游戏源码:https://github.com/jetbrains/kotlinconf-spinner --------- 二、开发平台项目 Kotlin 平台项目允许你将相同的代码编译到多个目标平台平台模块 平台模块可以依赖指定平台上可用的任何模块与库 (包括对于 Kotlin/JVM 平台的 Java 库与 Kotlin/JS 平台的 JS 库)。 如果之后Kotlin平台等实验室特性上有所突破的话,绝对会吸引更多的开发者。

    66190

    解决thrifty-compiler.jar运行报错不能编译IDL生成java class代码问题

    为什么Microsoft会重复制造轮子,开发一个android版本的thrift呢? 因为原版的thrift实现,对于android来说,方法太多,太复杂了,简而言之,就是太重了,并不适合android(android平台对应用的方法数量是有限制的,项目中方法太多,生成APK时都会报错) 我还没有尝试,但根据它的依赖库我推测轻量版本的thrifty并没有依赖android平台的独有的API,所以应该也是可以PC平台的JVM中运行的。 因为项目需要,要求把原本基于PC开发的基于RPC的项目移植到android,我就遇到了thrift/swiftandroid平台无法运行的问题。 /kotlin/releases/download/v1.3.11/kotlin-compiler-1.3.11.zip 将zip解压到本地文件夹,然后设置KOTLIN_HOME环境变量指定该文件夹,

    58810

    相关产品

    • API 网关

      API 网关

      腾讯云 API 网关(API Gateway)是腾讯云推出的一种 API 托管服务,能提供 API 的完整生命周期管理,包括创建、维护、发布、运行、下线等。您可使用 API 网关封装自身业务,将您的数据、业务逻辑或功能安全可靠的开放出来,用以实现自身系统集成、以及与合作伙伴的业务连接。

    相关资讯

    热门标签

    活动推荐

    扫码关注腾讯云开发者

    领取腾讯云代金券