为有牺牲多壮志,敢教日月换新天。

[Kotlin参考]一、总览-(7)多平台编

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公众号:山青咏芝(let_us_code)
➤博主域名:https://www.zengqiang.org
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:https://www.cnblogs.com/strengthen/p/12152300.html
➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

热烈欢迎,请直接点击!!!

进入博主App Store主页,下载使用各个作品!!!

注:博主将坚持每月上线一个新app!!!

多平台项目是Kotlin 1.2和1.3中的一项实验功能。本文档中描述的所有语言和工具功能在将来的Kotlin版本中都可能发生更改。

在所有平台上工作是Kotlin的明确目标,但我们认为这是一个更为重要的目标的前提:在平台之间共享代码。借助对JVM,Android,JavaScript,iOS,Linux,Windows,Mac甚至STM32等嵌入式系统的支持,Kotlin可以处理现代应用程序的任何和所有组件。这为代码和专业知识的重用带来了不可估量的好处,与执行两次或多次实施相比,节省了处理更具挑战性的任务的精力。

怎么运行的

总体而言,多平台并不是要为所有平台编译所有代码。该模型有其明显的局限性,我们了解现代应用程序需要访问其所运行平台的独特功能。Kotlin不会将您限制在世界上所有API的通用子集中。每个组件可以与其他组件共享尽可能多的代码,但是可以通过语言提供expectactual机制随时访问平台API 

这是一个简单的日志记录框架中的代码共享以及公共逻辑和平台逻辑之间的交互的示例。通用代码如下所示:

1 enum class LogLevel {
2     DEBUG, WARN, ERROR
3 }
4 
5 internal expect fun writeLogMessage(message: String, logLevel: LogLevel)
6 
7 fun logDebug(message: String) = writeLogMessage(message, LogLevel.DEBUG)
8 fun logWarn(message: String) = writeLogMessage(message, LogLevel.WARN)
9 fun logError(message: String) = writeLogMessage(message, LogLevel.ERROR)

它期望目标为提供特定于平台的实现writeLogMessage,并且通用代码现在可以使用此声明,而无需考虑其实现方式。

在JVM上,可以提供一种将日志写入标准输出的实现:

1 internal actual fun writeLogMessage(message: String, logLevel: LogLevel) {
2     println("[$logLevel]: $message")
3 }

在JavaScript世界中,可以使用一套完全不同的API,因此可以改为将日志记录到控制台:

1 internal actual fun writeLogMessage(message: String, logLevel: LogLevel) {
2     when (logLevel) {
3         LogLevel.DEBUG -> console.log(message)
4         LogLevel.WARN -> console.warn(message)
5         LogLevel.ERROR -> console.error(message)
6     }
7 }

在1.3中,我们重新设计了整个多平台模型。我们用于描述多平台Gradle项目新DSL更加灵活,我们将继续致力于使项目配置变得简单明了。

多平台图书馆

通用代码可以依赖一组涵盖日常任务的库,例如HTTP序列化管理协程此外,所有平台上都提供了广泛的标准库。

您总是可以编写自己的库,以提供通用的API,并在每个平台上以不同的方式实现它。

用例

Android-iOS

在移动平台之间共享代码是主要的Kotlin Multiplatform用例之一,现在可以使用部分代码(例如业务逻辑,连接性等)在Android和iOS之间共享来构建移动应用程序。

看到:

客户端服务器

代码共享可能带来好处的另一种情况是连接的应用程序,其中可以在运行在浏览器中的服务器和客户端上重用逻辑。Kotlin Multiplatform也涵盖了这一点。

所述Ktor框架是适用于连接系统构建异步服务器和客户端。

如何开始

教程和文档

Kotlin的新手?查看入门页面。

建议的文档页面:

推荐的教程:

示例项目

GitHub上还有更多示例

posted @ 2020-01-05 14:08  为敢技术  阅读(218)  评论(1编辑  收藏  举报