Kotlin跨平台-多端自动化部署插件KMMDeploy

背景

KMM官方提供的例子都是Android,iOS,KMM三个模块耦合在一个工程中,提供的构建指南也基本基于此。但是现实场景中,基本三个模块都是在三个单独的工程中。这种情况下,该如何构建双端产物并集成到双端工程中对于不少初学者来说都是个难题。KMM官方的插件任务多且类似,不一个个尝试都不能确定每个任务到底是在干啥。对于iOS的集成则更加麻烦,官方只提供了插件来支持cocoapods集成,并且指南也不明确,对于SPM的支持则完全没有。

在这个背景下,我决定编写一个插件KMMDeploy。它提供清晰的双端产物构建任务,并且支持多种集成方案,包括本地集成,远端maven集成,cocoapods集成,以及spm集成。开发者只需要使用这个插件便可以轻松完成双端的产物构建,发布及部署。

主要功能

该插件主要提供三个功能:

  1. 将KMM工程构建成双端产物,Android为AAR,iOS为XCFrameworks

  2. 自动配置Maven发布任务,生成发布Android产物AAR以及iOS产物的zip包到远端仓库的任务

  3. iOS若配置Cocoapods插件则生成podspec文件,和XCFrameworks一起复制到对应的git submodule(这个后面会详讲)。若配置SPM则生成Package.swift文件,并将产物打为zip包,发布到远端仓库

构建产物

对于第一次尝试KMM的开发人员来说,构建Android和iOS工件可能会让他们感到困惑。 Kotlin Multiplatform插件产生了很多任务,并没有提供有关如何构建项目的指南。因此,该插件提供了几个任务,清楚地显示如何为Android和iOS生成对应产物。

  • 构建Debug/Release版本的双端产物
./gradlew buildKMMDebug ./gradlew buildKMMRelease
  • 构建所有版本的双端产物
./gradlew buildKMM
  • 单独构建Android的AAR产物或者iOS的XCFrameworks产物

./gradlew buildKMMAARs ./gradlew buildKMMXCFrameworks

跑完这些任务后,即可在如下位置找到对应的产物:

  • Android:/build/outputs/aar/***.aar

  • iOS CocoaPods: /build/cocoapods/publish/

  • iOS XCFrameworks: /build/XCFrameworks/

配置发布任务

两端主工程想要依赖到KMM工程生成的产物就需要这些产物发送到远端仓库,而KMM插件并没有提供这样的能力,需要开发者手动配置发布任务和仓库,手动触发发布任务才能发布。而该插件则自动配置了对应的发布任务,并将最终的部署任务依赖到发布任务上ÿ

你可能感兴趣的:(Kotlin,Multiplatform,kotlin,自动化,android,ios,gradle)