[译]使用这个技巧轻松构建多平台应用

在 Compose Multiplatform 开发中,一个常见问题是缺乏现成可用的示例和方案。官方资源虽然提供了大量文档和示例,但缺乏详细的指导来说明如何按照最新指南轻松地开始使用 Compose Multiplatform。

为此介绍 可配置的 Compose Multiplatform 模板

Note

该模板在所有支持的平台上共享 99.9% 的功能(UI、业务逻辑等)。

该模板遵循以下一般原则:

  • 底层架构简约、预配置且符合最新推荐指南
  • 第三方依赖、组件、DevOps 实践和配置都是可选的,可以通过在线服务 Kotli 添加或排除
  • 所有开箱即用的解决方案在所有支持的平台上都能无缝运行,旨在加速开发复杂且生产就绪的应用程序,在实施和支持阶段优先考虑简单性和效率

支持的平台:

  • Android
  • iOS
  • Web (JS/Canvas)
  • Desktop (Windows, MacOS, Linux)

使用方法

Important

该模板是一个 Kotli 模板

要生成所需的项目结构,请使用在线服务 Kotli(免费且仅需要网络连接)。

一旦你配置了必要的功能并生成了包含源代码的压缩包,你将获得一个可以直接导入 IDE 的完整项目结构,然后就可以开始添加所需的业务逻辑了。

该模板还包含所有必要的示例,以便轻松理解包含的功能。

Note

运行你的项目以检查包含了哪些内容以及它们如何工作,一旦一切明了,就可以删除示例包和对它的任何引用。

架构

Kotli-Architecture

整体架构基于:

应用逻辑在 app 模块中实现,仅包含特定于应用的行为。

所有通用逻辑都是共享组的一部分,分为三个模块:

  • presentation — 用于集成应用组件的架构解决方案
  • data — 应用中使用的数据源
  • design — 应用的设计系统(字体、主题、UI组件等)
Note

这些模块仅在应用层面使用。这种方法让你能够独立开发这三个组件,并创建更复杂的应用结构。例如,特定于应用的功能可以作为单独的模块实现,具有相同的共享依赖。

模块 — presentation

提供架构解决方案以实现用户流程,并以生命周期感知的方式集成所有组件。

包括:

  • MVVM 模式实现 — 基于 Jetpack ViewModelJetpack Lifecycle 组件
  • 导航实现 — 基于 Jetpack Navigation 组件

包含的解决方案不是强制性的,因为所有必需的依赖都已正确包含,使你能够使用自己的模式和 Jetpack 组件。

Note

然而,提供的实现非常直观易用,并涵盖了各种真实场景中组件之间通信的所有可能情况。

你可以自由选择最适合你需求的方案。

模块 — data

为不同应用中常用的数据源提供基础实现。在通过 Kotli 进行项目设置时,只会包含所需的数据源。

Note

所有数据源都已配置为以灵活和便捷的方式访问必要的数据层。

模块 — design

提供预配置的主题、字体和 UI 组件,以建立整个应用的初始设计系统

默认模块实现基于 Google Material 3 Design,它提供了所有基础 UI 组件和指南,让你能够轻松创建自己的设计系统

除了 Material 3 库外,该模块还实现了在不同用户流程中使用的多个组件和容器。

这个模块的主要理念是创建一个设计系统,可以被应用的任何 UI 功能使用,而不依赖于底层 UI 工具包。

Note

该模块中现有的可组合项是示例,可以根据你的需求进行更改/删除。

模块 — app

应用模块本身包含:

  • 使用依赖注入(默认为 Koin)将所有包含的组件正确连接在一起的逻辑
  • 用于演示项目设置期间包含的一些功能的示例

一旦你下载并将初始项目结构导入到 IDE 中,项目就可以在设备上运行,使你能够理解包含的功能并开始添加所需的功能。

文档

一旦你通过 Kotli 配置了项目并下载了生成的源代码,这个项目就完全属于你,不再与服务绑定。每个项目的根目录都包含一个 README.MD 文件,其中包含以下有用的详细信息:

  • 用于准备项目结构的初始模板链接(类似本文的 GitHub 页面)
  • 用于准备和下载这些源代码的架构链接(Kotli 项目)
  • 项目设置期间包含的所有功能列表。每个功能在项目的 docs 目录中都有额外的文档,便于检查包含了什么,找到官方链接,并了解如何使用和配置每个功能(如果需要)
Note

一旦你打开 Kotli 项目的链接,所有与功能相关的最新文档也可以在线访问和查阅。

示例展示

当通过 Kotli 配置和下载项目时,它还提供了所有包含功能的示例。此外,示例界面被配置为下载模板运行时的初始界面。

showcase-01 showcase-02 showcase-03

该模板具有高度可配置性,允许你仅在应用中包含必要的功能。

所有这些功能都是可选的,将随时间更新,并可以在项目设置期间包含在生成的结构中。

所有功能都可以在这里找到,并会随时间更新 — Github README.md#features

https://kotli.xyz