Kotlin Multiplatform 创建多平台分发库

这篇具有很好参考价值的文章主要介绍了Kotlin Multiplatform 创建多平台分发库。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目标:通过本教程学习如何使用 Kotlin Multiplatform Library 创建多平台分发库(iOS,安卓)。

创建一个项目

1、本教程使用的是Android Studio创建
2、选择 新建工程,选择 Kotlin Multiplatform Library
3、点击next 输入需要创建的项目名称以及存放的位置
4、点击next,输入要创建的库的名称,默认shared
建议都选上 测试单元。
Kotlin Multiplatform 创建多平台分发库,Kotlin Multiplatform Mobile 提升,kotlin,开发语言,android,中间件

Kotlin Multiplatform 创建多平台分发库,Kotlin Multiplatform Mobile 提升,kotlin,开发语言,android,中间件

到这项目基本创建完毕,开始进入编写分发库代码阶段。

编写跨平台代码

定义要在公共代码中实现的类和接口
1、在公共模块中创建一个目录 org.jetbrains.base64 用来存放编写代码
2、在新建目录下面创建 Base64.kt 文件
3、在新创建的的文件中定义 Base64Encoder 将字节转换为 Base64格式的接口

package org.jetbrains.base64

interface Base64Encoder {
   
    fun encode(src: ByteArray): ByteArray
}

4、定义对象 Base64Factory 作为公共代码 以提供接口实现实例 Base64Encoder的方式

expect object Base64Factory {
   
    fun createEncoder(): Base64Encoder
}

expext 是在跨平台代码中用到的关键字,被expext 关键字修饰的Base64Factory对象 。对于需要分发的平台,需要使用关键字 actual 关键字予以实现。

此时项目应该会爆红,因为在公共模块中使用关键字 expect 创建了对象,对应的分发平台还没实现,这时需要一一进行实现

提供对应平台代码实现

安卓平台
1、找到安卓模块在模块下面创建一个 org.jetbrains.base64 的新包
2、在新包里面创建 Base64.kt 文件
3、使用关键字 actual 实现公共模块声明的 Base64Factory对象方法

package com.example.myapplication.org.jetbrains.base64

import android.annotation.TargetApi
import android.os.Build
import java.util.*

actual object Base64Factory {
   
    actual fun createEncoder(): Base64Encoder = JvmBase64Encoder
}

object JvmBase64Encoder : Base64Encoder {
   
    @TargetApi(Build.VERSION_CODES.O)
    override fun encode(src: ByteArray): ByteArray = Base64.getEncoder().encode(src)
    
}

写到这安卓的代码以好,应为安卓可以直接使用api进行转换。

iOS平台

iOS在这方面比较吃亏没有现成的东西可以用,需要自己实现。
1、找到iOS模块,在模块下面创建一个org.jetbrains.base64包
2、在新包下面创建一个 Base64.kt文件
3、实现公共模块的代码文章来源地址https://www.toymoban.com/news/detail-618550.html

package com.example.myapplication.org.jetbrains.base64

private val BASE64_ALPHABET: String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklm

到了这里,关于Kotlin Multiplatform 创建多平台分发库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

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

    作者简介 禹昂,携程移动开发专家,Google 开发者专家(Android),上海 Kotlin User Group 组织者,图书《Kotlin 编程实践》译者。 2022 年底,我们在携程的 Github organization 下开源了 SQLlin,SQLlin 是一款基于 Kotlin DSL 及 KSP 技术的,支持众多平台的 Kotllin Multipllatform SQLite 数据库框架

    2024年02月20日
    浏览(40)
  • Kotlin 1.9.0 发布:带来多项新特性,改进 Multiplatform/Native 支持

    Kotlin 的最新版本引入了许多新的语言特性,包括用于开放范围的…操作符、扩展正则表达式等。此外,它还改进了 Kotlin Multiplatform 和 Kotlin/Native 支持。 Kotlin 1.9 稳定了与枚举类关联的 entries 属性,它会返回所定义的枚举常量的所有值的列表。entries 弃用了 values(),它不再每次

    2024年02月14日
    浏览(36)
  • Kotlin 移动端多平台

    支持多平台编程是 Kotlin 的主要优势之一。它减少了为不同平台编写和维护相同代码所花费的时间,同时保留了本机编程的灵活性和优势。 KMM:Kotlin Multiplatform for mobile(移动设备的 Kotlin 多平台) KMM 多平台的主要用例之一是在移动平台之间共享应用程序逻辑代码 如果要实现

    2024年01月20日
    浏览(31)
  • kotlin Kmp多平台模板生成

    地址: Kotlin Multiplatform Wizard | JetBrains 可生成kotlin多个平台模板 https://terrakok.github.io/Compose-Multiplatform-Wizard/

    2024年01月19日
    浏览(30)
  • Kotlin空安全类型之平台类型

      由于直接获取平台类型 的属性值,而getString()返回了null,此时就会触发空指针 2.将平台类型传递到方法的非空参数中 比如: Kotlin会在编译时给方法的非空参数加上以下校验代码: Intrinsics.checkNotNullParameter(s, \\\"s\\\");//如果s为null就会抛异常 3.可能会成为隐藏的地雷 比如: 这里可能会

    2024年02月15日
    浏览(38)
  • 【Flutter跨平台插件开发】如何实现kotlin跟C++的相互调用

    在 Kotlin 中,可以使用 JNI (Java Native Interface) 来调用 C++ 代码 调用步骤: 创建 C++ 文件并实现函数。 在 Kotlin 中声明需要调用的 native 函数并加载 native 库。 调用示例 Flutter 插件项目的例子 在 Flutter 插件中引用已有的 C++ 源码需要以下步骤: 首先,在 Flutter 插件的 android 目录下

    2024年01月25日
    浏览(59)
  • NetMock 简介:简化 Java、Android 和 Kotlin 多平台中的 HTTP 请求测试

    NetMock可让我们摆脱在测试环境中模拟请求和响应的复杂性。 NetMock 是一个功能强大、用户友好的库,旨在简化模拟HTTP请求和响应的过程。 对开发者来说,测试HTTP请求经常会带来一些挑战,因为要在测试环境中模拟请求和响应的复杂性很高。这样就会增加手动测试的时间和精

    2024年02月11日
    浏览(44)
  • android studio创建一个新的项目为什么默认是kotlin语言而选择不了java语言

    关于android studio语言选择的问题。 我在进入android studio为什么创建一个新项目之后选择不了java语言有什么办法可以解决。 解决办法:这个模式下选着一个Empty Activity模块就可以使用java语言。 这对于刚刚接触anaroid studio新手比较管用。  

    2024年02月11日
    浏览(56)
  • 【Kotlin】函数式编程 ③ ( 早集合与惰性集合 | 惰性集合-序列 | generateSequence 序列创建函数 | 序列代码示例 | take 扩展函数分析 )

    及早集合 与 惰性集合 : 及早集合 : Eager Collection , 指的是 List , Map , Set 等集合 , 这些集合创建后 , 需要 将元素提前存储到集合中 , 然后才能访问 ; 惰性集合 : Lazy Collection , 在 集合刚创建时不必将集合元素放进去 , 当使用这些元素时才生成 , 这些 集合元素按需产生 ; 在 惰性集

    2024年02月02日
    浏览(104)
  • 【错误记录】Android Studio 创建 Module 模块报错 ( Cannot resolve external dependency org.jetbrains.kotlin:kotl )

    目前使用的是 最新的 Gradle 配置 , 创建 Module 生成的源码与 Gradle 配置出现了冲突 , 导致的问题 ; 解决此类问题 , 要仔细检查 Gradle 构建脚本 , 排查每个依赖库的来源 ; 本次错误就是 AS 系统自动成的 Module 修改了 Gradle 构建脚本 , 导致依赖下载失败 ; 在 Android Studio 的 已存在 工

    2024年02月08日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包