星と月を楽しみにして、待望の iOS 用 Jetpack Compose Multiplatform がついに正式にアルファ サポートを最近リリースしました. "および他の記事では、Compose Multiplatform が iOS をサポートしようとしていると何度も述べてきましたが、今ではCompose Multiplatformの最後の画面が完成しました。
実際、先月、JetBrains は Compose Multiplatform にいくつかの「主要な調整」を行い、compose-jb は「3 歳で死亡」し、compose-jb は正式にその名前を compose-multiplatform に変更し、さまざまなプラットフォーム用のテンプレート プロジェクトを提供しました。compose-multiplatform-ios-android-templateを含みます。
また、 iOSサポートに続いて compose-multiplatform バージョン 1.4.0 もリリースされています。ビルドされて使用されるためjpackage
、この目的のために使用されますJDK 17 :
JAVA_HOME
環境変数は、互換性のある JDK バージョンを指しています。javaHome
DSL 経由のセットアップ:
compose.desktop {
application {
javaHome = System.getenv("JDK_17")
}
}
复制代码
さて、これで公式に Kotlin を使用して同様の iOS UI を作成し、Swift-UI と同様の開発経験を得ることができ (XML に別れを告げます)、既存の Compose プロジェクトもより簡単に iOS アプリケーションにコンパイルして実現することができます。 UI とロジックの共有。
生産性の向上はありません。
現時点では、iOS のサポートはまだアルファ段階であり、ベータ段階でない場合は、API や互換性に変更が生じる可能性がありますが、正式にリリースされたバージョンとして、既に同じ Kotlinコードを使用して、同じ Android と iOS インターフェースをコンパイルします。
もちろん、KMM(Kotlin Multiplatform Mobile)はすでにiOSプラットフォームをサポートしており、Compose MultiplatformはKMMをベースに構築されているため、BluetoothやカメラなどのiOSネイティブAPIをサポートすることは大きな問題ではなく、同時にNative埋め込みMKMapViewなどの UI ビューもサポートされるようになりました。
Compose Multiplatform で iOS を試してみたい場合は、まず macOS コンピューターが必要です。次に、次のものが必要です。
同時にbrew install kdoctor
、KDoctor は KMM で必要なコマンド ライン ツールであり、KDoctor はビルド環境が正常かどうかも検出できるため、最初に KDoctorをインストールする必要があります。
接下来,如果使用 compose-multiplatform-ios-android-template ,在你的 Compose Multiplatform 项目会包括三个模块: androidApp 、iosApp 和 shared,其中 shared 故名思义就是共享的 Kotlin module :
- shared 包含 Android 和 iOS 上的通用的代码,也就是平台共享的部分,也是正常开发的 module 目录,比如入口
shared/src/commonMain/kotlin/App.kt
,改模块会被编译成 Android library 和 iOS framework 。 - androidApp 和 iosApp 就是支持变异为 App 的应用模块。
而目前要在 Android Studio 的 iOS 模拟器上运行 Compose Multiplatform,会需要在 iosApp
的运行配置上进行选择,主要是选择对应的 Execution target:
如果是需要运行到真机,那么首先你要有一个 iOS 开发者账号,然后登陆到你的 Xcode 上:
- 获取你账号下的
TEAM_ID
- 接入真机,在 Xcode 中注册的 iOS 设备
另外可以在终端运行 kdoctor --team-ids
来获取你当然的 Team Id 列表,当然,官方也表示如果 KDoctor 没起到作用,你还是需要打开 iosApp/iosApp.xcworkspace
,然后在 Signing & Capabilities 这个 Tab 下去选择和获取你的 Team 。
注意需要在现在 Xcode 上登录开发者账号,当然你不想登陆也可以,不过更麻烦,可以直接用生成的 p12 证书和 mobileprovision 文件,可参考《搭建 iOS 命令行服务打包发布全保姆式流程》 ,不过我想你们应该不会喜欢。
运行 iOS 之前需要设置上面说到的 TEAM_ID
,可以打开 iosApp/Configuration/Config.xcconfig
文件下设置 TEAM_ID
,之后在 Android Studio 中重新打开项目,这时候就可以在 iosApp
的运行配置中看到已注册的 iOS 真机。
其次可以看到上面的 Config.xcconfig
文件下有多个配置信息:
APP_NAME
:简单理解是应用名BUNDLE_ID
:类似 Application ID ,注意这个很重要,属于唯一标识应用,和 Andorid 随意折腾 application id 不同,请注意测试时,不要随便在临时账号上测试 Bundle ID, 因为被「登记」过的 Bundle ID 无法重复,要「找回」和「删除」是很麻烦(bu ke neng)的事情。TEAM_ID
:Apple 生成给你开发者账号的团队的唯一标识,因为运行 App 到真机需要证书和描述文件,而 team ID 就是证书简介中的对应组织单位。
打开 Xcode ,登陆开发者账号,插上 iOS 真机,自动注册设备和同步证书与描述文件,是最简单的流程。
如果在 Android Studio 中打开项目后,还需要更改上面的对应选项,目前还需要:
- 在 Android Studio 中关闭项目。
- 在的终端中运行 template 目录下的
./cleanup.sh
。 - 更改设置。
- Android Studio でプロジェクトを再度開きます。
上記の紹介は主に公式のcompose-multiplatform-ios-android-templateからの補足であり、多くの android 開発にとって iOS 環境の設定はまだ比較的慣れていない可能性があるため、現在 Compose Multiplatform for iOS はiOSチャンスに連絡するのが最善です。
そのため、Flutter がなくても、Kotlin と Compose Multiplatform のサポートにより、Android 開発は再び iOS 領域への攻撃を開始し、 iOS を補完した Compose Multiplatform は完全なプラットフォーム サポートの約束を公式に実現しました。
Compose Multiplatform for iOS が正式にリリースされる日を待ちましょう。