本頁提供最新版支援資料庫套件版本的詳細資料。如需先前版本,請參閱 支援資料庫修訂版本封存。
修訂版本 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) 仍處於 Alpha 版階段,因為其 API 介面尚未定案。我們不建議在實際工作環境中使用 Alpha 版程式庫。程式庫應嚴格避免仰賴實際工作環境中的 Alpha 版程式庫,因為這類程式庫的 API 介面可能會透過與原始碼和二進位檔不相容的方式變更。
已修正問題
- BottomNavigationView 選單在設計支援資料庫中未正確初始化
- PositionalDataSource 未正確處理預先插入項目至資料庫中的項目
- 滑桿不順且沒有回應
- 「SlicesProviderCompat.getPinnedSpecs()」不會將使用者 ID 新增至 URI
- RoutePlayer2:遠端播放功能未切換回本機播放。
- 快取配量剖析功能在執行動作時異常終止
- Google 搜尋應用程式在算繪靜態 Slice 時異常終止
- 當資料集隨著選取項目移除而變更時,RecyclerView 選擇資料庫中發生 ConcurrentModificationException
- PreferenceThemeOverlay 已更新為最新的質感設計主題。如未提供自訂主題,系統會使用 PreferenceThemeOverlay 做為預設主題。
- 淘汰 PreferenceThemeOverlay.v14 和 PreferenceThemeOverlay.v14.Material 主題,請改用 PreferenceThemeOverlay。
- PreferenceGroup 瀏覽權限現已與子項建立關聯,如果隱藏上層群組,其子項也不會在階層中顯示。使用 Preference.isShown() 瞭解偏好設定是否實際顯示在階層中。
- 已淘汰 Preference.onSetInitialValue(boolean, Object),並替換為 onSetInitialValue(Object)。PreferenceDataStore 現在也會正確還原預設值。
修訂版本 28.0.0 Beta 1
(2018 年 7 月)
這個支援資料庫 Beta 版的功能完整,而且其公用 API 介面相當穩定,可避免可能發生任何重大問題。雖然這個版本在實際工作環境中使用相當安全,但可能仍有錯誤。請將問題回報給公開的 Issue Tracker。
已修正問題
- 針對無法選取的項目使用 GestureSelectionHelper 指派事件
- 在滑桿值更新時,滑桿 Slice 可能有重複的拇指圖示
- IconCompat 破壞了 TYPE_URI 圖示
- 在偏好設定中使用 Seekbar 時發生異常終止
- Slice.toString() 停止運作
- OffsettingListUpdateCallback.onMoved() 呼叫 mCallback.onRemoved(),而非 mCallback.onMoved() (問題 110711937)
修訂版本 27.1.1
(2018 年 4 月)
已修正問題
- AsyncListDiffer 不會呼叫 getChangePayload (Android 開放原始碼計畫問題 73961809)
- 未清除 Fragment ViewModel 的名稱 (Android 開放原始碼計畫問題 74139250)
- 即使轉接程式為空值,RecyclerView.setRecycledViewPool() 仍會增加 AttachCount
- 如果 SmoothScroller.onStop 呼叫 stop() 或 startSmoothScroller(),表示 RecyclerView NPE
- 片段替換交易會在顯示新片段後導致先前的片段閃爍 (Android 開放原始碼計畫問題 74051124)
- 27.1.0 中的載入器回呼破壞性變更 (Android 開放原始碼計畫問題 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 公告中所述,我們會繼續在程式庫中採用
androidx
套件前置字串。這個新套件將推出一系列全新程式庫,包括heifwriter
和recyclerview-selection
。我們希望android.*
和androidx.*
能劃分,可讓您更清楚瞭解哪些 API 與平台組合,以及哪些是適用於跨不同 Android 版本的應用程式開發人員的靜態程式庫。 - 我們將 support-core-ui、support-core-utils 和 support-compat 的部分部分分為小型的程式庫。這項變更可協助我們日後解決支援程式庫依附元件的問題。我們現已提供下列新的程式庫:
- asynclayoutinflater (來自 support-core-ui)
- 集合 (來自 support-compat)
- coordinatorlayout (來自設計)
- Painadapter (來自 support-core-ui)
- 自訂檢視畫面 (來自 support-core-ui)
- documentfile (來自 support-core-utils)
- 導覽匣版面配置 (來自 support-core-ui)
- 內插器 (來自 support-core-ui)
- 載入器 (來自支援片段和核心公用程式)
- localbroadcastmanager (來自 support-core-utils)
- 列印 (來自 support-core-utils)
- slidingpanelayout (來自 support-core-ui)
- 滑動重新整理版面配置 (從支援核心使用者介面)
- viewpager (來自 support-core-ui)
全新的 API
recyclerview-selection
提供RecyclerView
的項目選取支援。套件提供:- 支援在 RecyclerView 清單中建立、修改、檢查及監控一組所選項目的變更。
- 支援符合直覺的多選擇動作:
- 觸控式選取可讓使用者以直覺的長按拖曳手勢選取項目範圍。
- 藉由滑鼠驅動的頻帶選擇,使用者可以透過傳統的滑鼠指標錶帶/套索動作,在 RecyclerView 清單中選取項目區塊。
- 支援以觸控為主的裝置,包括手機和支援觸控功能的筆記型電腦板型規格,以及以指標為中心的裝置。
- HEIF Writer 支援編寫 HEIF 格式靜態圖片。
- 設計程式庫
- 我們推出了全新的應用程式主題
Theme.MaterialComponents
,內含新屬性和元件的更新樣式。 - 我們新增了下列元件:
- 底部應用程式列
- 晶片
- 方塊群組
- 質感設計按鈕
- MaterialCardView
- 我們推出了全新的應用程式主題
- Slices 可供應用程式嵌入其他應用程式的範本內容。
- Slics-builder 包含以範本格式建構內容的方法。
- 配量檢視包含呈現該內容的方法。
- 瀏覽器動作為應用程式開發人員提供一個通訊協定,讓他們能夠針對網址啟動一致 (但可自訂) 的內容選單。這項功能必須搭配瀏覽器應用程式 (例如 Chrome,此功能仍在開發階段) 才能實作瀏覽器動作支援功能,
-
ContextCompat.getSystemService()
和getSystemServiceName()
允許在所有 API 級別中依類型進行系統服務查詢。
錯誤修正
- 未清除 Fragment ViewModel 的名稱 (Android 開放原始碼計畫問題 74139250)
- 使用 FragmentPagerAdapter 多次呼叫 onLoadFinished() (開放原始碼計畫問題 74182171)
- RecyclerView 的 LinearLayoutManager smoothScrollToPosition() 在某些情況下會顯示即時 (返回和第四) 動作 (Android 開放原始碼計畫問題 71567765)
修訂版本 27.1.0
(2018 年 2 月)
重要異動
- Loaders 的基礎實作經過重新編寫,改為使用生命週期。雖然 API 維持不變,但也會有一些行為變更:
initLoader()
、restartLoader()
和destroyLoader()
現在只能在主執行緒上呼叫。- 現在,當包含的 FragmentActivity/Fragment 開始和停止時,會分別呼叫載入器的
onStartLoading()
和onStopLoading()
。 - 系統只會在
onStart()
和onStop
之間呼叫onLoadFinished()
。因此,您現在可以在onLoadFinished()
中安全地完成片段交易。 - 與載入器相關的 FragmentController 方法現已淘汰。
- DialogFragment 的
getDialog()
現在會在onDestroyView()
前非空值,而不是在dismiss()
中變成空值您現在可以檢查getDialog().isShowing()
是否傳回 false,藉此判斷對話方塊是否已在onStop()
中手動關閉。
全新的 API
RecyclerView
的ListAdapter
(以及AsyncListDiffer
) 可讓您更輕鬆地在背景執行緒上計算清單差異比較。這些功能可協助 RecyclerView 自動為內容變更加上動畫效果,讓使用者只需在 UI 執行緒上減少工作即可。它們在內部使用DiffUtil
。SortedList.ReplaceAll
可以更新 SortedList 中的所有資料,並執行插入、移除、變更和移動等所有適當的動畫 (系統會將移動視為移除和插入作業)。- FragmentActivity 和 Fragment 現在會導入
ViewModelStoreOwner
,現可與ViewModelProvider
建構函式搭配使用,做為使用ViewModelProviders.of()
的替代方案 - 片段現在包含
requireContext()
、requireActivity()
、requireHost()
和requireFragmentManager()
方法,這兩種方法會傳回同等 get 方法的NonNull
物件,或擲回IllegalStateException
。 requireViewById()
,findViewById()
的@NonNull
Compat 版本已新增至WindowCompat
、ActivityCompat
和ViewCompat
,以便在找不到目標時擲回IllegalArgumentException
。LoaderCallbacks
方法現在有適當的@Nullable
和@NonNull
註解。FileProvider
現在可透過新的<external-media-path>
元素,在 API 21 以上版本裝置上支援getExternalMediaDirs()
。
錯誤修正
- 在 onCreate 中初始化 Loader 的片段在 ViewPager 中有無效的生命週期
- LoaderManager 會在 onLoadFinished 中擲回 IllegalStateException
- LoaderViewModel 未在 onCleared 中清除載入器
- 找不到 android.arch.lifecycle.ViewModelStoreOwner 的類別檔案
- 在 dismiss() 之後,沒有立即呼叫 DialogFragment 的關閉
- 使用可下載的字型時,國家/地區旗標表情符號無法在發布金鑰裝置上運作
- 偏好設定程式庫使用的屬性無法在舊版 Android 中運作
- MediaCompat 的 testlib 構件類型未正確記錄 (AOSP 問題 71559905)
- 在 TypefaceCompatUtil 中,Google Sans 當機
- 公開接收 Collection 的 ArraySet 建構函式。
- updateApi 會移除應保留的 .ignore 檔案
- 在瀏覽片段中建立的多餘 MainFragment
- 從 CarRecyclerView 中移除反射
- FragmentManagerImpl.checkStateLoss 中的 java.lang.IllegalStateException
- 使用 android.support.v4.content.PermissionChecker.checkSelfPermission 時出現 (未記錄) java.lang.SecurityException
- RecyclerView IndexOutOfBoundsException,因為 setAdapter 中的 State.mPreviousLayoutItemCount 未清除 (AOSP 問題 37657125)
- 在 onCreate 中初始化 Loader 的片段,在 ViewPager 內的生命週期無效 (Android 開放原始碼計畫問題 34831613)
- FragmentManagerImpl.execSingleAction 當機
修訂版本 27.0.2
(2017 年 11 月)
錯誤修正
-
EmojiEditTextHelper
會擲回NullPointerException
。 -
IllegalStateException
:尚未附加片段。 - 無法藉由輕觸畫面上的任何位置關閉「投放」圖示彈出式視窗。
-
MediaMetadataCompat
會擲回BadParcelableException
。
修訂版本 27.0.1
(2017 年 11 月)
錯誤修正
- 呼叫
startActivityForResult()
後,LifecycleRegistry 處於錯誤狀態。(問題 65665621) - 在舊版 API 級別中,已停用的按鈕顏色太亮。
- 使用者捲動畫面後,無法在
RecyclerView
中按一下項目。(Android 開放原始碼計畫問題 66996774) - 在 Talkback 中,點按「更多選項」不會導致系統公告新的彈出式視窗,也不會將焦點新增至新選項。
修訂版本 27.0.0
(2017 年 10 月)
API 差異
API 變更
- 許多 API 已加入是否可為空值註解,包括: 當系統未正確處理可為空值的傳回類型時,可能會導致 Kotlin 編譯錯誤。
-
Fragment
可以使用Transition
的支援資料庫版本進行片段轉換,包括共用元素轉換。 - 內容分頁程式庫 (
android.support.content.ContentPager
) 支援透過ContentProvider
公開的分頁內容。使用這個程式庫可讓用戶端避免 UI 執行緒上耗用大量資源的「遊標視窗切換」,為 Android 8.0 功能提供相容性程式庫。 -
ViewCompat
現已為自動填入方法新增包裝函式,包括getImportantForAutofill()
、isImportantForAutofill()
、setAutofillHints()
和setImportantForAutofill()
。 -
Leanback 可取得新功能並進行改善,並失去部分已淘汰的類別,例如:
-
Picker
現在可透過setSeparators()
方法,在不同資料欄之間使用不同的分隔符。 -
新增
DiffCallback
,讓ArrayObjectAdapter
能利用DiffUtil
提供的輸出內容。 - 新增基礎架構來支援具有變數控制項的媒體播放器,並新增選用的控制項,以便快轉、重複、隨機播放、下一個、上一個和倒轉。
- 移除
MediaControllerGlue
、PlaybackControlGlue、PlaybackControlSupportGlue
和PlaybackOverlayFragment
。
-
- 為進行測試,輪詢檢查公用程式取自 Android 開放原始碼計畫 CTS。它會輪詢條件的發生次數,
- 新增基礎架構,使用
PermissionCompatDelegate
支援 Android 5.0 免安裝應用程式的執行階段權限。 - 現已支援受信任的自訂分頁,並能定義應用程式和來源 URI 之間的關係。
- 簡化了 Android Wear 微光模式支援功能,利用 AmbientMode 無頭片段,也讓微光模式與架構元件的使用相容。
- Wear 團隊接獲有關這項重大異動的意見回饋。 詳情請參閱「Android Wear 版本資訊」。
- 隨著我們淘汰舊版 API 14 之前的 API,例如
android.support.v7.NotificationCompat
(請改用 v4NotificationCompat
)、KeyEventCompat
、ParallelExecutorCompat
和SearchViewCompat
,已移除部分已淘汰類別。 - 現在可以透過
android.support.wear.utils.MetadataConstants
取得遷移的 Wear 資訊清單中繼資料常數。 - 所有活動 (不僅限於 WearableActivity) 現在都能使用微光模式。詳情請參閱
AmbientMode
參考資料。 -
RoundedDrawable
現在支援 XML 加載。
錯誤修正
- 應用程式當機 (支援資料庫 27 和可下載的字型)
- 可下載字型不適用於更新 SDK 後建立的新專案
- SpeechRecognizer API 在最近一次升級中無法運作
- 移除動畫檢視畫面後,繪圖期間發生片段相關當機情形
- support-leanback-demos 媒體播放全都無效
- Android 支援資料庫正在將 <meta-data> 新增至資訊清單
- FontResourcesParserCompat 應瞭解 android:Attrs
- Leanback Glue 不支援「暫停」輸入鍵
- 當多個套件共用相同的構件 ID 時,IDE 中未解析的符號。
- Car 擴展器中的空值指標例外狀況
- 建立 MediaController 後隨機播放 / 重複模式設定 PlaybackState
- 瀏覽時,程式庫叢集預設海報會在下一個叢集上執行
- 推薦資訊卡中繼資料遭到截斷
- RecyclerView.AttachViewToParent() 中的 IllegalArgumentException
- 解封 SavedState 時發生 ClassNotFoundException (Android 開放原始碼計畫問題 37133281)
- 在 RecyclerView 中,焦點會卡住
- 修正 Leanback LayoutManager 中的 ANR
修訂版本 26.1.0
(2017 年 9 月)
這是特別版,用於整合支援資料庫與架構元件中的生命週期。如果您不是使用 Lifecycles 程式庫,就不需要從 26.0.2 更新。詳情請參閱架構元件版本資訊。
重要變更
Fragment
和FragmentActivity
(AppCompatActivity
的基礎類別) 現在會實作架構元件中的LifecycleOwner
介面。
修訂版本 26.0.2
(2017 年 8 月)
錯誤修正
- 支援資料庫 26.0.0 中的選單圖示已分割
GuidedAction.multilineDescription
無法與 Leanback 搭配運作
修訂版本 26.0.1
(2017 年 8 月)
錯誤修正
- 在 O-MR1 裝置上,FontCompat 26.0.0 當機
- 26.0.0 設計支援資料庫不應包含 Multidex 支援 (問題 63999442)
- AppBarLayout 現在自 26.0.0 起,左側邊框間距現在為 300 像素
- PlaybackTransportControl 導覽故障
- 在 onCreate 完成之前,系統會呼叫 Fragment.onCreateView
- android.os.BadParcelableException:unmarshalling 時發生 ClassNotFoundException:android.support.v4.media.MediaMetadataCompat
修訂版本 26.0.0
(2017 年 7 月)
重要事項:您現在可以透過 Google 的 Maven 存放區取得支援資料庫。您不需要從 SDK Manager 下載支援存放區。詳情請參閱支援程式庫設定。
重要變更
- 最低 SDK 版本已提升到 14。因此,許多只為了與 14 之前的 API 級別相容而存在的 API 已淘汰。這些 API 的用戶端應依據各個已淘汰 API 的參考資料頁面所述,改用對應的架構。
- Wear UI 程式庫包含許多類別,可協助您實作適用於 Wear 裝置的模式和版面配置。詳情請參閱「 使用 Wear UI 程式庫」。
- Percent 支援模組已淘汰。這個模組的用戶端應遷移至新的
ConstraintLayout
小工具,這個小工具會在 SDK Manager 中以獨立構件提供。 android.support.v7.app.NotificationCompat
及其包含的類別已淘汰,將在日後推出的版本中移除:- 請使用
NotificationCompat.Builder
而不是v7.app.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 後,ResourceNotFoundException 在 API 16 AVD 上執行 Kotlin 專案
- 設計檢視畫面中的 java.lang.AssertionError (支援資料庫 26.0.0-beta2)
- 支援資料庫小工具的 Android Studio 版面配置預覽故障
- 如果使用屬性建立偏好設定,則系統會忽略 Preference.setSingleLineTitle()
- 對支援資料庫的 25.3.0 / 25.4.0 修訂版本,DAC 的「因為」註解有誤
- ResourcesCompat.getFont() 擲回例外狀況
- 工具列標題不是粗體字型
- 使用 maxLines 自動調整大小功能會產生非預期的結果
- TextView.checkForRelayout() 中的 NullPointerException
- AppCompatTextViewAutoSizeHelper.setRawTextSize() 在版面配置期間呼叫 requestLayout()
- EmojiAppCompatTextView 異常終止
- 變更文字時,自動調整 TextView 不會自動調整
- Instacart 中的螢幕毀損
- MenuItemCompat 中的 UnsupportedOperationException
- NotificationCompat 無法在 API 24 以上版本中完整擷取動作
- 版面配置更新上的 CoordinatorLayout 錨定問題