Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Make your Android app into Multiplatform app

Make your Android app into Multiplatform app

Masatoshi Kubode

October 10, 2024
Tweet

More Decks by Masatoshi Kubode

Other Decks in Programming

Transcript

  1. © 2024 Wantedly, Inc. Make your Android app into Multiplatform

    app DroidKaigi 2024 AfterNight 2024/10/10 ウォンテッドリー株式会社 久保出雅俊
  2. © 2024 Wantedly, Inc. Compose Multiplatformとは Jetpack ComposeのKotlin Multiplatform版 •

    Composeとほぼ同じAPI • Android互換を意識したAPI
  3. © 2024 Wantedly, Inc. • パッケージ名がandroidx.compose • Lifecycle, ViewModel, Navigation

    • Multiplatform Resources Compose MultiplatformのAndroidとの互換性
  4. © 2024 Wantedly, Inc. • AndroidXのKotlin Multiplatform化 ◦ Room, DataStore,

    Paging, etc. • 各種KotlinライブラリのKMP化、CMP化 ◦ Coil, Koin, etc. Compose Multiplatform以外の実現可能性
  5. © 2024 Wantedly, Inc. 対象 android/sunflowerをiOSでも動作するようにしてみる 🍴 kubode/sunflower 理由 •

    もともとがXMLだったものをCompose化したアプリ • RoomやPagingなどKMP化したAndroidXを利用 • ほどよいコード量とテストコード
  6. © 2024 Wantedly, Inc. 手順 • [ ] KMPでないライブラリをKMPへ移行 ◦

    Gson → KotlinX Serialization ◦ Retrofit → Ktor ◦ Glide → Coil ◦ Dagger → Koin • [ ] Compose Multiplatform化 ◦ res → Multiplatform Resources ◦ Navigation • [ ] iOSターゲットの追加 ◦ Androidネイティブなコードをexpect/actualでiOS用に書き直し ◦ iOSアプリとして動作させる
  7. © 2024 Wantedly, Inc. 手順 • ✅ KMPでないライブラリをKMPへ移行 ◦ Gson

    → KotlinX Serialization ◦ Retrofit → Ktor ◦ Glide → Coil ◦ Dagger → Koin • ✅ Compose Multiplatform化 ◦ res → Multiplatform Resources ◦ Navigation • [ ] iOSターゲットの追加 ◦ Androidネイティブなコードをexpect/actualでiOS用に書き直し ◦ iOSアプリとして動作させる
  8. © 2024 Wantedly, Inc. まとめ • クロスプラットフォーム開発の1つの可能性を紹介 • Compose MultiplatformのAndroid互換性の良さ

    • 個人的には可能性を感じるが、まだまだ早い手法 ◦ Deeplinkやパフォーマンスの課題 ◦ 時間が解決するはず