近期支援資料庫修訂版本

本頁提供最新版支援資料庫套件版本的詳細資料。如需先前版本,請參閱 支援資料庫修訂版本封存

修訂版本 28.0.0 正式版

(2018 年 9 月 21 日)

這是支援資料庫 28.0.0 的穩定版本,適合用於實際工作環境。此為 android.support 套件中的最後一個功能版本,我們鼓勵開發人員遷移至 AndroidX

新功能

修訂版本 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 套件前置字串。這個新套件將推出一系列全新程式庫,包括 heifwriterrecyclerview-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

  • RecyclerViewListAdapter (以及 AsyncListDiffer) 可讓您更輕鬆地在背景執行緒上計算清單差異比較。這些功能可協助 RecyclerView 自動為內容變更加上動畫效果,讓使用者只需在 UI 執行緒上減少工作即可。它們在內部使用 DiffUtil
  • SortedList.ReplaceAll 可以更新 SortedList 中的所有資料,並執行插入、移除、變更和移動等所有適當的動畫 (系統會將移動視為移除和插入作業)。
  • FragmentActivity 和 Fragment 現在會導入 ViewModelStoreOwner,現可與 ViewModelProvider 建構函式搭配使用,做為使用 ViewModelProviders.of() 的替代方案
  • 片段現在包含 requireContext()requireActivity()requireHost()requireFragmentManager() 方法,這兩種方法會傳回同等 get 方法的 NonNull 物件,或擲回 IllegalStateException
  • requireViewById()findViewById()@NonNull Compat 版本已新增至 WindowCompatActivityCompatViewCompat,以便在找不到目標時擲回 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、PlaybackControlSupportGluePlaybackOverlayFragment
  • 為進行測試,輪詢檢查公用程式取自 Android 開放原始碼計畫 CTS。它會輪詢條件的發生次數,
  • 新增基礎架構,使用 PermissionCompatDelegate 支援 Android 5.0 免安裝應用程式的執行階段權限。
  • 現已支援受信任的自訂分頁,並能定義應用程式和來源 URI 之間的關係。
  • 簡化了 Android Wear 微光模式支援功能,利用 AmbientMode 無頭片段,也讓微光模式與架構元件的使用相容。
  • 隨著我們淘汰舊版 API 14 之前的 API,例如 android.support.v7.NotificationCompat (請改用 v4 NotificationCompat)、KeyEventCompatParallelExecutorCompat 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 更新。詳情請參閱架構元件版本資訊

重要變更

修訂版本 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 及其包含的類別已淘汰,將在日後推出的版本中移除:

全新的 API

  • RecyclerView 新增 fastScrollEnabled 布林值旗標。如果啟用,就必須設定 fastScrollHorizontalThumbDrawablefastScrollHorizontalTrackDrawablefastScrollVerticalThumbDrawablefastScrollVerticalTrackDrawable

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 錨定問題