Skip to content

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 の例です:

通常、このような API を共通化する強い理由はないため、androidMain のみに留めておくのが最適です。

シグネチャに Android クラスが含まれる API

Compose Multiplatform の API の中には、シグネチャ(定義)に android.*androidx.*androidx.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 で利用可能ではありません

Android API の移植リクエスト

Android から移植可能な各 API について、Compose Multiplatform の YouTrack にオープンなイシューが存在します。Android から移植して共通化できると思われる API があり、それに関する既存のイシューがない場合は、新しく作成してください。