Android 専用コンポーネント
Compose Multiplatformは、Jetpack Composeを基盤としています。Compose Multiplatformの機能のほとんどは、すべてのプラットフォームで利用可能です。しかし、Androidターゲットでのみ使用できるAPIやライブラリがいくつか存在します。これは、それらがAndroidに固有であるか、まだ他のプラットフォームに移植されていないためです。このページでは、Compose Multiplatform APIのこれらの部分を要約します。
時々、Jetpack Composeドキュメントやコミュニティが作成した記事で、Androidターゲットでのみ使用できるAPIを見かけるかもしれません。
commonMain
コードでそれを使用しようとすると、IDEがこのAPIは利用できないと通知します。
Android 専用API
Android専用APIはAndroidに固有のものであり、他のプラットフォームでは利用できません。これは、他のプラットフォームがAndroidで使用される特定の概念を必要としないためです。このAPIは通常、android.*
パッケージのクラスを使用するか、Android固有の動作を設定します。以下に、Android専用APIの一部例を挙げます。
android.context.Context
クラスLocalContext
およびLocalConfiguration
変数android.graphics.BitmapFactory
およびandroid.graphics.Bitmap
クラスImageBitmap.asAndroidBitmap()
関数android.app.Activity
クラスandroid.app.Activity.setContent()
関数ComposeView
クラスLocalView
変数Modifier.pointerInteropFilter()
関数- Hilt 依存性注入ライブラリ
通常、このようなAPIの一部を共通化する強力な理由はないため、androidMain
のみに留めるのが最善です。
シグネチャにAndroidクラスを含むAPI
Compose MultiplatformのAPIには、シグネチャにandroid.*
やandroidx.*
(androidx.compose.*
を除く)を使用しているものの、その動作が他のプラットフォームにも適用可能な部分があります。
- リソース管理:
stringResource
、animatedVectorResource
、Font
、およびリソース管理用の*.R
クラス。 詳細については、画像とリソースを参照してください。 - ナビゲーション。 詳細については、ナビゲーションとルーティングを参照してください。
ViewModel
クラス。- Paging ライブラリ。
ConstraintLayout
レイアウト。- Maps ライブラリ。
- Previewツールと、デスクトップアプリケーションをプレビューするためのプラグイン。
WebView
クラス。- Compose Multiplatformにまだ移植されていない他のJetpack Composeライブラリ。
それらは将来、複雑さと需要に応じてcommonMain
に移植される可能性があります。
パーミッション、デバイス(Bluetooth、GPS、カメラ)、IO(ネットワーク、ファイル、データベース)など、アプリケーション開発時に頻繁に使用されるAPIは、Compose Multiplatformのスコープ外です。
シグネチャにAndroidクラスを含まないAPI
APIの一部には、そのシグネチャにandroid.*
やandroidx.*
クラスが含まれておらず、他のプラットフォームにも適用可能であるにもかかわらず、Androidターゲットでのみ利用できるものがあります。その理由は通常、実装が多くのプラットフォーム固有の要素を使用しており、他のプラットフォーム向けに別の実装を記述するのに時間がかかるためです。
通常、このようなAPIの一部は、Androidターゲット向けのJetpack Composeで導入された後、Compose Multiplatformに移植されます。
Compose Multiplatform 1.8.2では、以下のAPIはcommonMain
では利用できません。
Modifier.imeNestedScroll()
関数Modifier.systemGestureExclusion()
関数Modifier.magnifier()
関数LocalOverscrollConfiguration
変数AnimatedImageVector.animatedVectorResource
API- material3-adaptive ライブラリ
- material3-window-size-class ライブラリ
Android APIの移植リクエスト
Androidから移植可能な各APIについて、Compose Multiplatform YouTrackに未解決のissueがあります。あるAPIがAndroidから移植され共通化できると思われる場合、それに対する既存のissueがない場合は、新規作成してください。