KMM まとめ 速報 - Kotlin Multiplatform Mobile 【#ios | #android】

このページは随時更新していくページです。

まずは、2022年 Stable版リリースまで追っていきます。

開発時に使えるだろう記事をフォーカスしてまとめておきます。

連絡などは Twitter や Facebook の DM でどうぞ。

KMM まとめ 速報 ( Kotlin Multiplatform Mobile )【#ios | #android】



おすすめ

Googleは、この状況を改善するために、すべてのKotlinターゲットのための適切なマルチプラットフォームの成果物として、Composeランタイムを出荷すべきです。残念ながら、彼らのKotlinマルチプラットフォームの話は、コミュニティのニーズから数年遅れており、これがすぐに実現する見込みは非常に低い。

👉 Multiplatform Compose and Gradle module metadata abuse - Jake Wharton 

 

- New KMM library project wizard.
- Support for the new type of KMM library distribution: XCFramework.
- Enabled HMPP for new KMM projects.
- Support for explicit iOS targets declaration.
- Enabled KMM plugin wizards on non-Mac machines.
- Support for subfolders in the KMM module wizard.
- Support for Xcode Assets.xcassets file.
- Fixed the plugin classloader exception.
- Updated the CocoaPods Gradle Plugin template.
- Kotlin/Native debugger type evaluation improvements.
- Fixed iOS device launching with Xcode 13.

👉 KMM plugin releases | Kotlin 

クロスプラットフォームモバイル環境向け SDK の Kotlin Multiplatform Mobile(KMM)は、2020年8月にアルファ版として公開されました。

👉 アルファ版以降の KMM 新着情報 | The Kotlin Blog 

公式

👉 アルファ版以降の KMM 新着情報 | The Kotlin Blog 
👉 Kotlin Multiplatform Mobile がアルファ段階に移行 | The Kotlin Blog 
👉 Kotlin Multiplatform Mobile | Kotlin 

その他

👉 5分でわかる、Kotlin Multiplatform Mobile (KMM) 
👉 KMMでiOS・Android
を共通化しよう - dely tech blog 
👉 KMMというもう一つの選択肢 | bravesoft blog 
👉 Kotlin Multiplatform Mobile(KMM)がベータへ。コンカレント処理でのメモリリークフリー、iOSエコシステムとの連携強化など - Publickey 

実際に確認してみる

👉 AndroidStudio 利用する Java (JDK) の選択・設定の方法 
👉 Mac に Homebrew で OpenJDK11 を インストール する 

(このページは随時更新していくページです。)


Opt-in requirement marker annotation on override requires the same marker on base declaration

各記述を以下のように個別に置き換えるのがとりあえずシンプルでいいのかな。


@FlowPreview
→ @OptIn(FlowPreview::class)


@ExperimentalCoroutinesApi
→ @OptIn(ExperimentalCoroutinesApi::class)

gradle で一括で無視しときますか?

いうて、まだまだ変更がありそうなところではある。

Opt-in requirements (aka Experimental API support)

👉 kotlinx.coroutines/Annotations.kt at master · Kotlin/kotlinx.coroutines 
👉 [BUG] [multiplatform] ExperimentalAPI annotation from Kotlin 1.6.0 and above - githubmemory 
👉 Opt-in requirements (aka Experimental API support) · Issue #95 · Kotlin/KEEP 
👉 Opt-in requirements | Kotlin 

👉 @SuppressWarnings て使っていますか。 

2022-05-14 : 追記

→ Deprecated に。
👉 '-Xopt-in' is deprecated and will be removed in a future release, please use -opt-in instead hatena-bookmark


IllegalArgumentException: Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent.

 FLAG_IMMUTABLE or FLAG_MUTABLE
target S+ で出るらしい。


java.lang.IllegalArgumentException: com.benigumo.sample: Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent.
   Strongly consider using FLAG_IMMUTABLE, only use FLAG_MUTABLE if some functionality depends on the PendingIntent being mutable, e.g. if it needs to be used with inline replies or bubbles.
       at android.app.PendingIntent.checkFlags(PendingIntent.java:375)
       at android.app.PendingIntent.getBroadcastAsUser(PendingIntent.java:645)
       at android.app.PendingIntent.getBroadcast(PendingIntent.java:632)
       at androidx.work.impl.utils.ForceStopRunnable.getPendingIntent(ForceStopRunnable.java:174)
       at androidx.work.impl.utils.ForceStopRunnable.isForceStopped(ForceStopRunnable.java:108)
       at androidx.work.impl.utils.ForceStopRunnable.run(ForceStopRunnable.java:86)
       at androidx.work.impl.utils.SerialExecutor$Task.run(SerialExecutor.java:75)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
       at java.lang.Thread.run(Thread.java:920)

PendingIntent を利用してない場合は、

PendingIntent
以下を追記で消える。

バグの修正
PendingIntent の可変性を明示的にして、Android 12 をターゲットに設定したときのクラッシュを修正します。(b/180884673)

👉 WorkManager  |  Android デベロッパー  |  Android Developers 


implementation "androidx.work:work-runtime-ktx:2.7.0"

PendingIntentを使ってる場合は、

フラグ追加で微修正。

👉 PendingIntentのFLAG_IMMUTABLEとFLAG_MUTABLE - Kenji Abe - Medium 
👉 Android12 が来たので新機能を使ってみました。 
👉 Android バージョン別シェア 2022年3月