《KMM 技术在移动 App 开发中的探索与实践-袁晗光.pdf》由会员分享,可在线阅读,更多相关《KMM 技术在移动 App 开发中的探索与实践-袁晗光.pdf(36页珍藏版)》请在三个皮匠报告上搜索。
1、KMM 技术在移动 App 开发中的探索与实践分享人:袁晗光袁晗光袁晗光百度资深研发工程师百度资深研发工程师从事软件开发 16 余年,2013 年入职百度,目前负责百度 App 和其他多个创新类 App 功能迭代与框架设计方向,长期从事研发质量、效率间的平衡探索。编码成本高,需降本增效。相同的业务逻辑双端需用不同的语言各自实现一遍。双端业务逻辑的实现完全一致还很难做到。同样的业务逻辑仅靠口头上或文档上方案对齐导致最终编码实现上有着不小的差别。双端体验上有着不小的差别,数据上产生的不一致性导致不便解释其合理性(交互体验、收益回顾)。双端业务逻辑实现方式不一致导致修改点不能完全对齐、同步。后期升级
2、维护、测试成本都较高。UI 代码没有很好的和业务逻辑代码解耦合,造成业务逻辑代码复用困难,不方便做单元测试,组件间的循环依赖增多。业务逻辑变更需要拉上双端的研发都对齐一遍,然后各自编码实现一遍。同样的业务逻辑双端都需要测试验证一遍。问题背景问题背景1.概述概述I.KMM 基本原理介绍II.同类跨平台框架对比 Flutter&React Native2.KMM KMM 开发环境介绍开发环境介绍I.环境配置&项目结构II.特定于平台的实现方式 expect/actual III.如何引用已有组件 API IV.如何在已有的工程中集成 KMM AAR&Framework 3.重点技术重点技术I.多线
3、程 模型、状态共享、可变性、Atomic 类II.基础库建设:网络、数据库 4.实践落地实践落地I.落地情况介绍 目录目录01Kotlin Multiplatform Mobile,其中 iOS 端基于 Kotlin Native(简称 KN)技术,Android 端基于 Kotlin JVM,利用 KMM 技术可以使用 Kotlin 语言技术栈在 iOS 和 Android应用程序之间共享通用代码,只在必要时编写特定于平台的代码,用来构建统一的业务逻辑代码。1.1 KMM 1.1 KMM 基本原理基本原理 简介简介 1.21.2 同类跨平台框架对比同类跨平台框架对比 KMMKMM的优势的优势
4、 无需内置多套引擎(runtime),包体积增量更少。对于 Android 开发者无需多学习一套编程语言和编程思想,门槛更低。基于双端标准组件输出,审核被拒风险较小(iOS)。更强的互操作性,支持与本地编程语言的双向互操作,可以直接使用现有库,避免了众多基础组件的重复建设。FlutterReact Native022.12.1 环境配置环境配置 安装工具:Android Studio(建议官方最新版)Kotlin 插件 Kotlin Multiplatform Mobile 插件 Xcode(12.5 版本及以上)JDK(8 及以上)2.1.22.1.2 创建跨平台创建跨平台AppApp步骤:
5、在Android Studio中,选择文件|新建|新建项目。在项目模板列表中选择Kotlin Multiplatform App/Library。为应用程序指定名称。保留应用程序和共享文件夹的默认名称,并在 iOS 框架分发选项列表中选择常规框架。2.1.22.1.2 项目结构项目结构三个部分组成:共享模块-包含Android和iOS应用程序的核心应用程序逻辑:类、函数等。构建到 AAR&Framework 中,使用Gradle作为构建系统。(commonMain、androidMain、iosMain)iOS应用程序中的Xcode项目 Android应用程序中的Kotlin模块.2.2 特定
6、于平台的API 和实现 expect fun getDeviceModel():Stringactual fun getDeviceModel()=android.os.Build.MODEL/Xiaomi 10 actual fun getDeviceModel()=UIDevice.current.model/iPhone 11,6 expect/actual 机制:/获取手机型号字符串的接口基本流程:在 commonMain 目录下建立一个 expect 类或 Top-Level 方法,类似创建一个协议声明。分别在 androidMain 和 iosMain 目录中,创建与 expect