このページでは、最新のサポート ライブラリ パッケージ リリースについて詳しく説明します。それ以前のリリースについては、 サポート ライブラリのリビジョン アーカイブをご覧ください。
リビジョン 28.0.0 プロダクション
(2018 年 9 月 21 日)
これはサポート ライブラリ 28.0.0 の安定版リリースであり、本番環境での使用に適しています。これは、android.support
パッケージの最後の機能リリースです。デベロッパーには、AndroidX に移行することをおすすめします。
新しい機能と特長
-
AnimatedStateListDrawableCompat
により、ドローアブルの状態の遷移がアニメーション表示されるようになりました。 -
VectorDrawableCompat
で、グラデーション、ColorStateList
の塗りつぶし、ストロークがサポートされるようになりました。
リビジョン 28.0.0 RC 2
(2018 年 8 月 27 日)
サポート ライブラリのリリース候補はすべての機能が完成しており、その公開 API サーフェスは安定版です。重大な問題が発生しない限り、このリリースは最終的な安定版としてリリースされます。このリリースは本番環境で安全に使用できます。問題がある場合は、公開されている Issue Tracker で報告してください。
修正された問題
- ProGuard により View Model Application コンストラクタが削除されました(公開問題 112230489)
- AnimatedStateListDrawableCompat の定常状態を修正しました。
- mediarouter 1.0.0 から media2 への依存関係を削除しました。
- ホームボタンを押しても「Fragment.getViewLifecycleOwner()」が停止しない(公開問題 113070421)[公開問題 113070421](https://issuetracker.google.com/issues/113070421)
リビジョン 28.0.0 RC 1
(2018 年 8 月 6 日)
サポート ライブラリのリリース候補はすべての機能が完成しており、その公開 API サーフェスは安定版です。重大な問題が発生しない限り、このリリースは最終的な安定版としてリリースされます。このリリースは本番環境で安全に使用できます。問題がある場合は、公開されている Issue Tracker で報告してください。
注: media2 などの一部のライブラリは、API サーフェスがまだ最終決定されていないため、アルファ段階のままです。本番環境ではアルファ版のライブラリを使用しないことをおすすめします。ライブラリの API サーフェスはソース互換性やバイナリ互換性のない方法で変更される可能性があるため、製品版ではアルファ版のライブラリに依存しないようにする必要があります。
修正された問題
- design サポート ライブラリ内で BottomNavigationView メニューが正しく初期化されない問題を解決しました。
- PositionalDataSource で、データベースに対する先頭追加アイテム挿入が正しく処理されない問題を解決しました。
- スライダーが正常に動作せず、応答しなくなることがある問題を解決しました。
- SlicesProviderCompat.getPinnedSpecs() がユーザー ID を URI に追加しない問題を解決しました。
- RoutePlayer2: リモート再生がローカル再生に戻らない問題を解決しました。
- キャッシュ済みスライスを解析するとアクション時にクラッシュする問題を解決しました。
- 静的スライスのレンダリングで Google 検索アプリがクラッシュする問題を解決しました。
- 選択を削除してデータセットが変更されたときに RecyclerView 選択ライブラリの ConcurrentModificationException が発生する
- PreferenceThemeOverlay が最新のマテリアル テーマに更新されました。カスタムテーマが指定されていない場合、PreferenceThemeOverlay がデフォルトのテーマとして使用されます。
- PreferenceThemeOverlay のために PreferenceThemeOverlay.v14 と PreferenceThemeOverlay.v14.Material テーマは非推奨になりました。
- PreferenceGroup の表示が子に関連付けられるようになりました。親グループを非表示にすると、その子も階層に表示されなくなります。Preference.isShown() を使用して、階層内の Preference が実際にユーザーに表示されるかどうかを確認します。
- Preference.onSetInitialValue(boolean, Object) が非推奨になり、onSetInitialValue(Object) に置き換えられました。また、PreferenceDataStore がデフォルト値を正しく復元するようになりました。
リビジョン 28.0.0 Beta 1
(2018 年 7 月)
重大な問題が発生しない限り、サポート ライブラリのこのベータ版リリースはすべての機能が完成しており、公開 API サーフェスは安定版です。このリリースは本番環境で安全に使用できますが、まだバグが含まれている可能性があります。 問題が発生した場合は、公開されている Issue Tracker で報告してください。
修正された問題
- 選択不可能なアイテムのイベントを食べる GestureSelectionHelper がイベントを追加する
- スライダーの値の更新時に、スライダー スライスでつまみアイコンが重複することがある
- IconCompat によって TYPE_URI アイコンが破損する
- シークバーを使用した設定でのクラッシュ
- Slice.toString() でのクラッシュ
- OffsettingListUpdateCallback.onMoved() が mCallback.onMoved() ではなく mCallback.onRemoved() を呼び出す(問題 110711937)
リビジョン 27.1.1
(2018 年 4 月)
修正された問題
- AsyncListDiffer が getChangePayload を呼び出さない(AOSP 問題 73961809)
- Fragment ViewModel の onCleared が呼び出されない(AOSP 問題 74139250)
- アダプターが null であっても RecyclerView.setRecycledViewPool() が attachCount を増加させる
- SmoothScroller.onStop が stop() または startSmoothScroller() を呼び出すと、RecyclerView の NPE が発生する
- Fragment Replacement トランザクションにより、新しいフラグメントが表示された後に、前のフラグメントがちらつく。(AOSP 問題 74051124)
- 27.1.0 で変更を壊すローダ コールバック(AOSP の問題 74135998)
- 垂直グリッドビューで列が 1 より大きい場合、RTL レイアウトが動作しない
- FragmentPagerAdapter を使用して ViewPager で onLoadFinished が複数回呼び出される
- 現在のリストを設定した後に、AsyncListDiffer が更新をディスパッチする必要がある(AOSP 問題 74003309)
- ShareActionProvider が 27.1.0 で ClassCastException をスローする
- ViewPager によるフラグメント ライフサイクルの変更(AOSP 問題 73976255)
リビジョン 28.0.0 Alpha 1
(2018 年 3 月)
注: 28.0.0-alpha1 は、Android P デベロッパー プレビューをサポートするプレリリース バージョンです。API サーフェスは変更される可能性があります。また、サポート ライブラリの最新の安定版の機能やバグ修正が含まれているとは限りません。
重要な変更点
- 以前に
Android KTX の発表でお知らせしたとおり、Google はライブラリ全体で
androidx
パッケージ プレフィックスの採用を続けています。この新しいパッケージでは、heifwriter
やrecyclerview-selection
など、いくつかの新しいライブラリが導入されています。android.*
とandroidx.*
を分けることで、どの API がプラットフォームにバンドルされ、どの API がアプリ デベロッパー向けの静的ライブラリで、異なるバージョンの Android であるかが明確になることを願っています。 - support-core-ui、support-core-utils、support-compat は、一部が小さなライブラリに分割されています。この変更により、今後のサポート ライブラリの依存関係の解除が可能になります。以下の新しいライブラリが加わりました。
- asynclayoutinflater(support-core-ui から)
- collections(support-compat から)
- coordinatorlayout(design から)
- cursoradapter(support-core-ui から)
- customview(support-core-ui から)
- documentfile(support-core-utils から)
- drawerlayout(support-core-ui から)
- interpolator(support-core-ui から)
- loader(support-fragments および core-utils から)
- localbroadcastmanager(support-core-utils から)
- print(support-core-utils から)
- slidingpanelayout(support-core-ui から)
- swiperefreshlayout(support-core-ui から)
- viewpager(support-core-ui から)
新しい API
recyclerview-selection
がRecyclerView
の項目選択をサポートします。パッケージには次のものが含まれます。- RecyclerView リスト内の選択されたアイテムセットに対する作成、変更、検査、変更のモニタリングをサポートします。
- 直感的な複数選択アクションのサポート:
- タップによる選択により、ユーザーは直感的な長押しとドラッグのジェスチャーでアイテムの範囲を選択できます。
- マウスドリブンのバンド選択により、ユーザーは従来のマウスポインタ バンド/投げ縄アクションを使用して RecyclerView リスト内のアイテム ブロックを選択できるようになりました。
- スマートフォンやタップ対応のノートパソコンのフォーム ファクタや、ポインタ中心のデバイスなど、タッチ中心のデバイスのサポート。
- HEIF Writer は、HEIF 形式の静止画像の書き込みをサポートします。
- デザイン ライブラリ
- 新しいアプリテーマである
Theme.MaterialComponents
が導入され、コンポーネントの属性が新しくなり、スタイルが更新されました。 - 次のコンポーネントを追加しました。
- BottomAppBar
- Chip
- ChipGroup
- MaterialButton
- MaterialCardView
- 新しいアプリテーマである
- Slice は、他のアプリからテンプレート化されたコンテンツを埋め込むためのフレームワークを提供します。
- slices-builders は、テンプレート形式でコンテンツを作成するためのメソッドを備えています。
- slices-view には、そのコンテンツを表示するためのメソッドが含まれています。
- ブラウザ アクションは、アプリ デベロッパーが URL に対して一貫した(ただしカスタマイズ可能な)コンテキスト メニューを起動するためのプロトコルを提供します。この機能は、ブラウザ アクションのサポートを実装するブラウザアプリ(この機能がまだ開発中の Chrome など)の有無に依存します。
-
ContextCompat.getSystemService()
とgetSystemServiceName()
を使用すると、すべての API レベルでタイプ別にシステム サービスを検索できます。
バグの修正
- Fragment ViewModel の onCleared が呼び出されない(AOSP 問題 74139250)
- FragmentPagerAdapter を使用して ViewPager で onLoadFinished() が複数回呼び出される(AOSP 問題 74182171)
- RecyclerView の LinearLayoutManager の smoothScrollToPosition() が、特定の状況下で不規則な(前後の)動きを表示するようになりました。(AOSP 問題 71567765)
リビジョン 27.1.0 リリース
(2018 年 2 月)
重要な変更点
- ローダの基盤実装を書き換えて、ライフサイクルを使用するように変更しました。API に変更はありませんが、いくつかの動作変更があります。
initLoader()
、restartLoader()
、destroyLoader()
はメインスレッドでのみ呼び出せるようになりました。- ローダの
onStartLoading()
とonStopLoading()
は、それを含む FragmentActivity/Fragment の開始時と停止時に呼び出されるようになりました。 onLoadFinished()
は、onStart()
とonStop
の間でのみ呼び出されます。その結果、Fragment トランザクションをonLoadFinished()
で安全に実行できるようになりました。- ローダに関連する FragmentController メソッドのサポートが終了しました。
- DialogFragment の
getDialog()
は、dismiss()
で null になるのではなく、onDestroyView()
まで非 null になりました。getDialog().isShowing()
が false を返すかどうかを確認することで、onStop()
でダイアログが手動で閉じられたかどうかを判断できるようになりました。
新しい API
RecyclerView
のListAdapter
(AsyncListDiffer
とともに)を使用すると、バックグラウンド スレッドでリストの差分を簡単に計算できます。これにより、RecyclerView は UI スレッドでの作業を最小限に抑えて、コンテンツの変更を自動的にアニメーション化できます。内部でDiffUtil
が使用されています。SortedList.ReplaceAll
を使用すると、SortedList 内のすべてのデータを更新できます。これにより、挿入、削除、変更、移動に適したすべてのアニメーションが実行されます(移動は削除と挿入として扱われます)。- FragmentActivity と Fragment が
ViewModelStoreOwner
を実装し、ViewModelProviders.of()
を使用する代わりにViewModelProvider
コンストラクタで使用できるようになりました。 - フラグメントに
requireContext()
メソッド、requireActivity()
メソッド、requireHost()
メソッド、requireFragmentManager()
メソッドが追加されました。これらのメソッドは、同等の get メソッドのNonNull
オブジェクトを返すか、IllegalStateException
をスローします。 findViewById()
の@NonNull
互換バージョンであるrequireViewById()
がWindowCompat
、ActivityCompat
、ViewCompat
に追加されました。ターゲットが見つからない場合、これらはIllegalArgumentException
をスローします。LoaderCallbacks
メソッドに、適切な@Nullable
アノテーションと@NonNull
アノテーションが追加されました。- API 21 以降のデバイスでは、新しい
<external-media-path>
要素を介してFileProvider
がgetExternalMediaDirs()
をサポートするようになりました。
バグの修正
- onCreate でローダを初期化するフラグメントで ViewPager 内のライフサイクルが破損する
- LoaderManager が onLoadFinished で IllegalStateException をスローする
- LoaderViewModel が onCleared でローダをクリアしない
- android.arch.lifecycle.ViewModelStoreOwner のクラスファイルが見つからない
- Dismiss() の直後に DialogFragment onDismiss が呼び出されない
- ダウンロード可能フォントを使用している場合、国旗の絵文字がリリースキー デバイスで機能しない
- Preferences ライブラリが、古いバージョンの Android で動作しない属性を使用する
- MediaCompat の testlib アーティファクトのタイプが正しく記載されていない(AOSP 問題 71559905)
- TypefaceCompatUtil で Google Sans がクラッシュする
- Collection を受け取る ArraySet コンストラクタを公開しました。
- updateApi が、保持すべき .ignore ファイルを削除する
- BrowseFragment に冗長な MainFragments が作成される
- CarRecyclerView からリフレクションの使用を削除
- FragmentManagerImpl.checkStateLoss で java.lang.IllegalStateException が発生する
- android.support.v4.content.PermissionChecker.checkSelfPermission の使用中に(ドキュメント化されていない)java.lang.SecurityException が発生した。
- setAdapter で State.mPreviousLayoutItemCount がクリアされていないため、RecyclerView IndexOutOfBoundsException が発生する(AOSP 問題 37657125)
- onCreate でローダを初期化するフラグメントで ViewPager 内でライフサイクルが破損する(AOSP 問題 34831613)
- FragmentManagerImpl.execSingleAction がクラッシュする
リビジョン 27.0.2 リリース
(2017 年 11 月)
バグの修正
-
EmojiEditTextHelper
がNullPointerException
をスローする。 -
IllegalStateException
: Fragment がまだアタッチされていません。 - 画面上の任意の場所をタップしても「キャスト」アイコンのポップアップを閉じることができない。
-
MediaMetadataCompat
がBadParcelableException
をスローする。
リビジョン 27.0.1 リリース
(2017 年 11 月)
バグの修正
-
startActivityForResult()
が呼び出された後、LifecycleRegistry が誤った状態になっています。 (問題 65665621) - 古い API レベルにおいて無効なボタンの色が明るすぎた問題を解決しました。
- ユーザーがスクロールした後、
RecyclerView
内のアイテムをクリックすることはできません。(AOSP 問題 66996774) - TalkBack で、その他のオプションをクリックしても、新しいポップアップが通知されたり、新しいオプションにフォーカスが追加されたりすることはありません。
リビジョン 27.0.0 リリース
(2017 年 10 月)
API 差分
API の変更
- null 可能性アノテーションが、次のようなさまざまな API に追加されました。 これにより、null 値許容の戻り値の型が適切に処理されない場合、Kotlin のコンパイル エラーが発生する可能性があります。
-
Fragment
は、共有要素の遷移を含むフラグメントの遷移に、Transition
のサポート ライブラリ バージョンを使用できます。 - コンテンツ ページング ライブラリ(
android.support.content.ContentPager
)は、ContentProvider
を介して公開されるページング コンテンツをサポートしています。このライブラリを使用することで、クライアントは UI スレッドでの高コストなインタープロセス「カーソル ウィンドウのスワップ」を回避し、Android 8.0 機能向けの互換性ライブラリを提供できます。 -
ViewCompat
で、getImportantForAutofill()
、isImportantForAutofill()
、setAutofillHints()
、setImportantForAutofill()
などの自動入力メソッドのラッパーが追加されました。 -
Leanback には新機能が追加され、以下のように改良され、サポートが終了したクラスが利用できなくなります。
-
Picker
で、setSeparators()
メソッドを使用して、各列の間でさまざまな区切り文字を使用できるようになりました。 -
DiffCallback
が追加され、DiffUtil
からの出力をArrayObjectAdapter
が利用できるようになりました。 - 可変コントロールを備えたメディア プレーヤーをサポートするインフラストラクチャを追加し、早送り、リピート、シャッフル、次へ、前へ、巻き戻しのオプション コントロールを追加しました。
MediaControllerGlue
、PlaybackControlGlue、PlaybackControlSupportGlue
、PlaybackOverlayFragment
を削除しました。
-
- テスト用に、PolllingCheck ユーティリティを AOSP CTS から移植しました。タイムアウト期間内に発生する条件をポーリングします。
- Android 5.0 用の Instant Apps で実行時の権限をサポートするため、
PermissionCompatDelegate
を使用するインフラストラクチャを追加しました。 - 信頼できるカスタムタブがサポートされるようになりました。また、アプリと元の URI との関係を定義する機能も用意されています。
- AmbientMode ヘッドレス フラグメントを使用することで、Android Wear の常に画面表示モードのサポートが簡素化されます。これにより、アーキテクチャ コンポーネントの使用と互換性のある常に画面表示モードのサポートも可能になります。
- Wear チームは、この重要な変更に関するデベロッパーからのフィードバックをお待ちしています。詳細については、Android Wear リリースノートをご覧ください。
- サポートが終了した一部のクラス(
android.support.v7.NotificationCompat
(代わりに v4NotificationCompat
を使用)、KeyEventCompat
、ParallelExecutorCompat
、SearchViewCompat
など)は、V14 以前の古い API からの移行に伴い削除されました。 - 移行された Wear マニフェストのメタデータ定数はすべて、
android.support.wear.utils.MetadataConstants
を介して使用できるようになりました。 - 常に画面表示モードのサポートが、WearableActivity だけでなく、すべてのアクティビティで利用できるようになりました。詳細については、
AmbientMode
のリファレンスをご覧ください。 -
RoundedDrawable
で XML インフレーションがサポートされるようになりました。
バグの修正
- サポート ライブラリ 27 とダウンロード可能フォントを使用するとアプリがクラッシュする
- SDK の更新後に作成した新しいプロジェクトで、ダウンロード可能なフォントが機能しない
- SpeechRecognizer API が最新のアップグレードで破損する
- アニメーション化されたビューを削除した後の描画中にフラグメント関連のクラッシュが発生する
- support-leanback-demos メディア再生がすべて破損します。
- Android サポート ライブラリがマニフェストに <meta-data> を追加
- FontResourcesParserCompat が android: attrs を認識する必要がある
- Leanback Glue が一時停止入力キーをサポートしていません。
- 複数のパッケージが同じアーティファクト ID を共有している場合に、IDE でシンボルが解決されない。
- CarExtender で null ポインタ例外が発生する
- MediaController を作成した後に PlaybackState が誤ってシャッフル / 繰り返しモードに設定される
- ナビゲーション中に、ライブラリ クラスタのデフォルト ポスターが次のクラスタに表示される問題を解決しました。
- おすすめカードのメタデータが途切れている
- RecyclerView.attachViewToParent() で IllegalArgumentException が発生する
- SavedState のアンマーシャリング時に ClassNotFoundException が発生する(AOSP 問題 37133281)
- RecyclerView でフォーカスが止まってしまう
- Leanback LayoutManager の ANR を修正
リビジョン 26.1.0 リリース
(2017 年 9 月)
これは、サポート ライブラリをアーキテクチャ コンポーネントのライフサイクルと統合するための特別なリリースです。Lifecycle ライブラリを使用していない場合は、26.0.2 からアップデートする必要はありません。詳細については、アーキテクチャ コンポーネントのリリースノートをご覧ください。
重要な変更点
Fragment
とFragmentActivity
(AppCompatActivity
の基本クラス)に、アーキテクチャ コンポーネントのLifecycleOwner
インターフェースが実装されました。
リビジョン 26.0.2 リリース
(2017 年 8 月)
バグの修正
- サポート ライブラリ 26.0.0 でメニュー アイコンがフラット化される問題を解決しました。
- Leanback で
GuidedAction.multilineDescription
が正しく動作しない
リビジョン 26.0.1 リリース
(2017 年 8 月)
バグの修正
- O-MR1 デバイスで FontCompat 26.0.0 がクラッシュする
- 26.0.0 Design Support Library に Multidex のサポートが含まれていなければなりません(問題 63999442)
- 26.0.0 以降、AppBarLayout の左パディングが 300 ピクセルになりました
- PlaybackTransportControl ナビゲーションが破損する問題
- onCreate が終了する前に Fragment.onCreateView が呼び出される
- android.os.BadParcelableException: android.support.v4.media.MediaMetadataCompat のアンマーシャリング時に ClassNotFoundException が発生する
リビジョン 26.0.0 リリース
(2017 年 7 月)
重要: サポート ライブラリは Google の Maven リポジトリから利用できるようになりました。SDK Manager からサポート リポジトリをダウンロードする必要はありません。詳細については、サポート ライブラリのセットアップをご覧ください。
重要な変更点
- 最小 SDK バージョンが 14 に引き上げられました。そのため、14 より前の API レベルとの互換性を保つためだけに存在する API の多くが非推奨になりました。これらの API のクライアントは、非推奨の各 API のリファレンス ページに記載されているように、同等のフレームワークに移行する必要があります。
- Wear UI ライブラリには、Wear デバイスで動作するパターンとレイアウトの実装に役立つクラスが含まれています。詳細については、 Wear UI ライブラリの使用をご覧ください。
- Percent サポート モジュールは非推奨になりました。このモジュールのクライアントは、SDK Manager で個別のアーティファクトとして提供されている新しい
ConstraintLayout
ウィジェットに移行する必要があります。 android.support.v7.app.NotificationCompat
とそれを含むクラスは非推奨となったため、今後のリリースで削除される予定です。v7.app.NotificationCompat.Builder
ではなくNotificationCompat.Builder
を使用します。これまで v7 AppCompat Builder の使用に依存していた機能が v4 Compat Builder に組み込まれました。-
DecoratedCustomViewStyle
がandroid.support.v4.app
パッケージに移動しました。 -
MediaStyle
とDecoratedMediaCustomViewStyle
が media-compat ライブラリの一部になり、android.support.v4.media.app パッケージに格納されました。
新しい API
RecyclerView
用の新しいfastScrollEnabled
ブール値フラグ。有効にする場合、fastScrollHorizontalThumbDrawable
、fastScrollHorizontalTrackDrawable
、fastScrollVerticalThumbDrawable
、fastScrollVerticalTrackDrawable
を設定する必要があります。
API 差分
バグの修正
- RecyclerView.toString() で無限ループが発生する
- Canary 6 にアップグレードした後、API 16 AVD で Kotlin プロジェクトを実行すると ResourceNotFoundException が発生する
- サポート ライブラリ 26.0.0-beta2 を使用したデザインビューで java.lang.AssertionError が発生する
- サポート ライブラリ ウィジェットで Android Studio のレイアウト プレビューが破損する
- 属性を使用して Preference が作成されていない場合、Preference.setSingleLineTitle() が無視されます。
- サポート ライブラリのリビジョン 25.3.0 / 25.4.0 で、DAC の「を指定して」アノテーションが正しくない
- ResourcesCompat.getFont() が例外をスローする
- ツールバーのタイトルが太字でない
- maxLines を使用して自動サイズ調整を行うと、予期しない結果が生じる
- TextView.checkForRelayout() で NullPointerException が発生する
- AppCompatTextViewAutoSizeHelper.setRawTextSize() がレイアウト中に requestLayout() を呼び出す
- EmojiAppCompatTextView がクラッシュする
- テキストが変更されたときに Autosize TextView が自動的に調整されない
- Instacart の画面が破損する
- MenuItemCompat で UnsupportedOperationException が発生する
- API 24 以降で NotificationCompat がアクションが完全に抽出されない
- レイアウト更新時の CoordinatorLayout のアンカーの問題