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 依存関係注入(Dependency Injection)ライブラリ
通常、このような API を共通化する強い理由はないため、androidMain のみに留めておくのが最適です。
シグネチャに Android クラスが含まれる API
Compose Multiplatform の API の中には、シグネチャ(定義)に android.* や androidx.*(androidx.compose.* を除く)を使用しているものの、その動作が他のプラットフォームにも適用可能なものがあります:
- リソース管理:
stringResource、animatedVectorResource、Font、およびリソース管理用の*.Rクラス。 詳細は、画像とリソースを参照してください。 - ナビゲーション。 詳細は、ナビゲーションとルーティングを参照してください。
ViewModelクラス。詳細は、マルチプラットフォーム ViewModel を参照してください。- Paging ライブラリ。
ConstraintLayoutレイアウト。- Maps ライブラリ。
- Preview ツール、およびデスクトップアプリケーションをプレビューするためのプラグイン。
WebViewクラス。- Compose Multiplatform にまだ移植されていないその他の Jetpack Compose ライブラリ。
これらは、複雑さや需要に応じて、将来的に commonMain へ移植される可能性があります。
権限(パーミッション)、デバイス(Bluetooth、GPS、カメラ)、入出力(ネットワーク、ファイル、データベース)など、アプリケーション開発で頻繁に使用される API は、Compose Multiplatform のスコープ外です。
シグネチャに Android クラスが含まれない API
シグネチャに android.* や androidx.* クラスが含まれておらず、API が他のプラットフォームにも適用可能である場合でも、Android ターゲットでのみ利用可能な API があります。この主な理由は、実装がプラットフォーム固有の要素を多く使用しており、他のプラットフォーム向けの実装を作成するのに時間がかかるためです。
通常、このような API は Android ターゲット向けの Jetpack Compose で導入された後、Compose Multiplatform に移植されます。
Compose Multiplatform 1.9.3 では、以下の API は commonMain で利用可能ではありません:
Modifier.imeNestedScroll()関数Modifier.systemGestureExclusion()関数Modifier.magnifier()関数LocalOverscrollConfiguration変数AnimatedImageVector.animatedVectorResourceAPI- material3-adaptive ライブラリ
- material3-window-size-class ライブラリ
Android API の移植リクエスト
Android から移植可能な各 API について、Compose Multiplatform の YouTrack にオープンなイシューが存在します。Android から移植して共通化できると思われる API があり、それに関する既存のイシューがない場合は、新しく作成してください。
