サポート ライブラリ

注: Android 9.0(API レベル 28)のリリース以降、Jetpack の一部として AndroidX という新しいバージョンのサポート ライブラリが導入されました。AndroidX ライブラリには既存のサポート ライブラリのほか、最新の Jetpack コンポーネントも含まれています。

サポート ライブラリは引き続きご利用いただけます。過去のアーティファクト(バージョン 27 以前で android.support.* としてパッケージ化されたもの)は、Google Maven で引き続き利用できます。ただし、新しいライブラリ開発はすべて AndroidX ライブラリ内で行うことになります。

すべての新しいプロジェクトに AndroidX ライブラリを使用することをおすすめします。また、既存のプロジェクトを AndroidX に移行することもご検討ください。

複数の API バージョンをサポートするアプリを開発するときは、以前のバージョンの Android に新しい機能を提供したり、同等の機能にスムーズに戻したりする標準的な方法が必要な場合があります。以前のバージョンのプラットフォームを処理するコードを構築する代わりに、これらのライブラリを利用してその互換性レイヤを提供できます。さらに、サポート ライブラリには標準のフレームワーク API では利用できない便利なクラスや機能が追加され、より多くのデバイスにまたがる開発やサポートが容易になっています。

元々はアプリ向けの単一バイナリ ライブラリであった Android サポート ライブラリが、アプリ開発用のライブラリ スイートに進化しました。現在、これらのライブラリの多くは、必須ではありませんがアプリ開発の一部として強く推奨されています。

このドキュメントでは、サポート ライブラリのコンポーネントや、アプリでサポート ライブラリを効果的に使用する方法を理解するのに役立つサポート ライブラリの概要を説明します。

注意: サポート ライブラリ リリース 26.0.0(2017 年 7 月)以降、ほとんどのサポート ライブラリでサポートされる最小 API レベルが、多くのライブラリ パッケージで Android 4.0(API レベル 14)まで上がっています。対象 詳細については、バージョン サポートとパッケージ 名前

サポート ライブラリの用途

サポート ライブラリの用途はいくつかあります。以前のバージョンのプラットフォームに対して下位互換性があるクラスは、そのうちのひとつにすぎません。アプリでサポート ライブラリを使用する方法の一覧を以下に示します。

  • 新しい API 向けの下位互換性 - 多数のサポート ライブラリが、新しいフレームワーク クラスとメソッド向けに下位互換性を提供しています。たとえば、Fragment サポートクラスを使用すると、Android 3.0(API レベル 11)より前のバージョンを搭載しているデバイス上でフラグメントがサポートされます。
  • 便利なヘルパークラス - サポート ライブラリは、特にユーザー インターフェースの開発に使用される複数のヘルパークラスを提供します。対象 たとえば、RecyclerView クラスは 非常に長いリストを表示、管理するためのインターフェース ウィジェット。 API レベル 7 以降の Android バージョンが必要です。
  • デバッグとユーティリティ - アプリに組み込んだコード以外のユーティリティを提供する機能が多数用意されています。たとえば、メソッド入力に対するコード lint チェックを強化した support-annotations ライブラリや、65,536 を超えるメソッドを使用するアプリの構成、配信を行うための Multidex サポートなどがあります。

サポート ライブラリとフレームワーク API の使用上の相違点

サポート ライブラリは、Android フレームワークの API によく似たクラスとメソッドを提供します。このことから、フレームワーク バージョンの API または同等のサポート ライブラリを使用する必要があるのではないかと思われるかもしれません。フレームワーク API の代わりにサポート ライブラリ クラスを使用するべき状況についてのガイドラインは次のとおりです。

  • 特定の機能の互換性 - 以前のバージョンのプラットフォームを実行しているデバイスで最新のプラットフォーム機能をサポートする必要がある場合は、サポート ライブラリの同等のクラスとメソッドを使用してください。
  • 関連ライブラリ機能の互換性 - 高度なサポート ライブラリ クラスの場合、1 つまたは複数の追加サポート ライブラリ クラスに依存している可能性があります。そのため、依存関係を満たすようにサポート ライブラリ クラスを使用する必要があります。たとえば、ViewPager サポートクラスの場合、FragmentPagerAdapter サポートクラスまたは FragmentStatePagerAdapter サポートクラスとともに使用する必要があります。
  • 一般的なデバイスの互換性 - アプリで使用する特定のプラットフォーム機能に関して下位互換性を確保する予定がない場合も、アプリ内でサポート ライブラリ クラスを使用することをおすすめします。たとえば、フレームワークの Activity クラスの代わりに ActivityCompat を使用すると、Android 6.0(API レベル 23)で導入された新しいパーミッション モデルを組み込むなど、後で新しい機能を利用できます。

プラットフォーム API クラスの互換実装を実現するサポート ライブラリ クラスは、場合によっては、ホストデバイスのプラットフォーム バージョンの制限により、最新リリースで利用できる機能の一部を実現できないことがあります。この場合、サポート ライブラリ クラスはグレースフル デグラデーションを実行するように設計されており、現在のプラットフォーム API のすべての機能やデータを提供しないことがあります。このため、使用するライブラリ クラスとメソッドについてリファレンス ドキュメントを確認し、アプリでサポートされる最も古いバージョンのプラットフォームを実行しているデバイスで徹底的にテストする必要があります。

注: サポート ライブラリは、すべてのフレームワーク API に対して同等のクラスやメソッドを提供するわけではありません。場合によっては、フレームワーク メソッドの呼び出しを明示的な SDK バージョン チェックと統合し、デバイスで利用できないメソッドを処理するための代替コードを提供する必要があります。コードでバージョン チェックを使用する方法の詳細については、異なるプラットフォーム バージョンのサポートをご覧ください。

バージョン サポートとパッケージ名

サポート ライブラリ パッケージによっては、最初にサポートしていた API の最小レベルを v# 表記で示したパッケージ名を持つものがあります(support-v4 など)。サポート ライブラリ バージョン 26.0.0(2017 年 7 月リリース)以降、すべてのサポート ライブラリ パッケージを対象に、サポートされる最小 API レベルが Android 4.0(API レベル 14)に変更されました。このため、サポート ライブラリの最近のリリースを使用する場合は、v# パッケージ表記が最小の API サポートレベルを示しているとは限りません。最近のリリースで行われたこの変更は、v4 と v7 のライブラリ パッケージでサポートされる API の最小レベルが本質的に同等であることも意味します。たとえば、support-v4 と support-v7 のどちらのパッケージも、26.0.0 リリース以降のサポート ライブラリに対して最小 API レベル 14 をサポートします。

サポート ライブラリのリリース バージョン

サポート ライブラリのリリース バージョン(24.2.0 や 25.0.1 など)は、そのリリースのすべてのライブラリでサポートされている最小 API レベルとは異なります。リリース バージョン番号は、ビルドの対象となったプラットフォーム API のバージョンを示します。つまり、そのバージョンのライブラリに含まれている最新の API です。

具体的には、通常はリリース バージョン番号の最初の部分(バージョン 24.2.0 の場合は 24)が、リリース時に使用可能であったプラットフォーム API のバージョンに対応しています。サポート ライブラリのリリース バージョン レベルは、その API レベルのいくつかの機能が組み込まれていることを意味しますが、新しいプラットフォーム API バージョンでリリースされたすべての機能と互換性があるとは限りません。

ライブラリの依存関係

Android サポート ライブラリ スイートの多くのライブラリは、1 つ以上のライブラリと依存関係があります。たとえば、ほとんどすべてのサポート ライブラリには support-compat パッケージとの依存関係があります。通常は Gradle ビルドツールが自動的に従属ライブラリを追加してライブラリの依存関係を管理するため、サポート ライブラリの依存関係を気にする必要はありません。

アプリに含まれているライブラリとその依存関係を確認するには、アプリ開発プロジェクトのビルドルートで次のコマンドを実行して、Android サポート ライブラリや他のライブラリを含むプロジェクトの依存関係のレポートを取得します。

gradle -q dependencies your-app-project:dependencies

Gradle を使用して開発プロジェクトにサポート ライブラリを追加する方法については、サポート ライブラリのセットアップをご覧ください。Gradle の使用について詳しくは、ビルドを設定するをご覧ください。

また、すべての Android サポート ライブラリが、最近のリリース(Android 4.0(API レベル 14)以降)のプラットフォームのベースレベルに対して依存関係があります。