サポート ライブラリ

注: 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 サポートクラスとともに使用する必要があります。
  • 一般的なデバイスの互換性 - アプリで下位互換性のある特定のプラットフォーム機能を使用しない場合でも、アプリでサポート ライブラリ クラスを使用することをおすすめします。たとえば、Android 3.0(API レベル 2.0)で導入された新しい権限モデルを組み込むなど、後でフレームワークの Activity クラスの代わりに ActivityCompat を使用すると、新しい機能を利用できるようになります。

プラットフォーム 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)以降)のプラットフォームのベースレベルに依存しています。