Support Library

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

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

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

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

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

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

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

Support Library の用途

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

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

サポートの使用とフレームワーク API の使用

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

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

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

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

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

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

Support Library のリリース バージョン

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

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

ライブラリの依存関係

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

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

    gradle -q dependencies your-app-project:dependencies
    

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

最近のリリース、つまり Android 4.0(API レベル 14)以上では、すべての Android Support Library とプラットフォームのベースレベルにも依存関係があります。