前言
随着kotlin代码跨平台方案的推出,kotlin跨平台一度引起不少波澜。但波澜终归没有掀起太大的风浪,作为一个敏捷型开发的公司,依然少不了Android和iOS的同步开发,实际成本和效益并没有太多变化。所以对于大多数公司来说依然风平浪静……
时过境迁,如今kotlin已经支持Android、iOS、Web、PC的桌面UI开发了,并且iOS已经进入Beat的里程碑,kotlin即将迎来一统天下的时刻——一人一语言码完所有端。
上手一试
kotlin作为Android官方语言并且完全支持Android Studio,所以KMM对Android来说完全0门槛,不需要任何学习就可以上手,并且完全能自主解决各种问题。
1.首先下载官方demo(也有对应插件,但不建议使用):Kotlin Multiplatform Wizard | JetBrains(防失效方式:Create your multiplatform project | Kotlin Multiplatform Development Documentation (jetbrains.com)>点击“Open the Kotlin Multiplatform wizard”即可)。Android、iOS、Web、PC、Server都可以选,这里建议全选,然后下载。
2.此处默认你已经会了Android Studio,我们解压后不要急着打开(打开巨慢,下载还总是超时)
将gradle/wrapper/gradle-wrapper.properties文件修改为tx镜像:
distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-8.4-bin.zip
将settings.gradle.kts文件的repositories(2个地方)都修改成如下:
repositories {maven("https://maven.aliyun.com/repository/central")maven { setUrl("https://maven.aliyun.com/repository/public") }maven { setUrl("https://maven.aliyun.com/repository/google") }maven { setUrl("https://jitpack.io") }google {mavenContent {includeGroupAndSubgroups("androidx")includeGroupAndSubgroups("com.android")includeGroupAndSubgroups("com.google")}}mavenCentral()gradlePluginPortal()maven { setUrl("https://repo1.maven.org/maven2/") }maven("https://maven.pkg.jetbrains.space/public/p/compose/dev")}
然后使用Android Studio打开,按上述改法预计10分钟左右就构建完成了,当然如果报错请自行解决(和Android基本一致)
跑起来
Server
运行java服务端算是最简单的一个了,等到构建成功找到“server>src>main>kotlin>包名>Application”然后对着main函数点击run就行了(如果第一次出现找不到main的错误,再次run就行了)。然后根据日志提示使用任意浏览器打开链接如“127.0.0.1:8080”,即可看到返回信息。
Android
由于Android本身就支持kotlin并且框架也是jetpack,所以跑到Android设备上也是非常轻松的,选择composeApp(应该是默认项,下方截图)后直接右侧的run三角形就行了(如图),如果有错误,直接搜索Android相关的问题,基本上没有什么坑,这里不再多说
PC(Windows、Mac、Linux)
pc完全基于jvm的,运行到pc端应该也不会有什么难点,你只需要配置好java的环境变量就行了,运行方式:右侧边栏Gradle>composeApp>Tasks>compose Desktop>run。当然运行时需要安装到电脑上,根据各系统的安装提示就行了。
Web
运行到网页端第一次可能需要科学一下,因为kotlin用到了nodejs的功能,而nodejs一般是访问不了的(不开科学会出现长时间等待好几分钟后才会提示超时)。当然你还需要一个较新版的谷歌(119以上)、edge(119)或者火狐(121)浏览器。如果你都已经准备好了,那运行到网页端也应该不是问题,依然是右侧边栏Gradle>composeApp>Tasks>kotlin browser>wasmJsBrowserRun。
iOS
要想运行到iOS手机上,要求就相对高很多了:
1.一台较新的Mac电脑(博主用的m1,再低可能会出现跑不起来也没任何提示)
2.安装好xcode(建议App Store下载,不然安装位置不对也可能导致跑不起来也没任何提示)
3.配置完整的java环境,完整的!完整的!完整的!
由于博主省懒,之前配置了Android Studio自带阉割版的java环境变量,导致跑不起来也没任何提示,你可以去官网下载JDK或者简单一点“Android Studio>设置>Gradle……>Gradle Tools>Grade>Gradle JDK>Download JDK”,然后记住下载的目录配置到环境变量上即可。
4.添加模拟器或者使用真机
5.Android Studio内安装插件“Kotlin Multiplatform”(设置>Plugins>Marketplace>搜索Kotlin Multiplatform),重启AS
6.添加iOS设备,选择Edit Config>点击加号>选择iOS Application>选择xcode路径(应该都会自动出来),框选里的都要填完(一般自动填的),填完后点击确定后点击右侧的run三角形即可运行到iOS上
[Mac不在,暂无运行截图]
运行提醒:多个端只能同时运行一个,运行前请先停止其他端的task
现状
作为横跨所有端并且语法统一的kmm,它的优点自然很多,不需要过多赘述,当然到目前为止依然有不少问题有待解决:
1.ktor server框架目前还算比较年轻,自身尚有很多优化空间。
2.jetpack虽然谷歌一直在推,但是由于这是属于革命性架构变更,目前占有率估计连20%都没有。
3.Web端必须要求浏览器支持wasm并且支持GC功能,目前谷歌和火狐也是去年才支持的,Safari到现在仍旧在开发中,其他小众浏览器更不用提支持了。
4.iOS手机目前还没发布release,并且只支持iOS15(iPhone13)以上,更早的版本暂不支持。
5.各端权限相关问题,对于权限、文件、图片各端需要单独自行处理,这算是所有跨平台方案的通病,属于无解型。
6.对于鸿蒙系统,目前还没有支持的意愿,这一块几乎空白。
7.作为开发者当然最重要的还是岗位了,目前看下来这种岗位几乎为0。
当前应用方向
虽然kmm的问题不少,有些甚至比较致命,但就目前来说仍可以在某些方面有一席之地,并且后期潜力巨大,完全可以当做初期铺垫。
1.对于偏应用的初创项目kmm的Android、iOS还是比较方便和快速
2.对于小型服务端,ktor也是有不少优点,并且也能在app端人员中快速上手
3.对于内部网页系统,那如果app端人员也会写那何乐而不为呢
4.当然没有ui的Multiplatform早已经正式发版并跨所有端了,如果先共享逻辑后期再考虑共享ui不失为一种比较友好的解决方案(不少大厂已经开始尝试了)
转载请注明出处:王能的博客Kotlin真·全平台——Kotlin Compose Multiplatform Mobile(kotlin跨平台方案、KMP、KMM)-CSDN博客
后续:
1.如何打包发布
2.如何修改分类源集(Android、iOS为一类,Web、PC为一类)