近期的支援資料庫修訂版本

本頁提供有關最新支援資料庫套件版本的詳細資料。如需較舊的版本,請參閱 支援資料庫修訂版本封存內容

修訂版本 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 依附元件
  • 按下主畫面按鈕 (公開問題 113070421) ([公開問題 113070421](https://issuetracker.google.com/issues/113070421) ) 時,「Fragment.getViewLifecycleOwner()」不會停止。

修訂版本 28.0.0 RC 1

(2018 年 8 月 6 日)

這個支援資料庫的候選版本具有完整功能,而且公開的 API 介面相當穩定。這個版本將發布為最終穩定版本,杜絕所有可能發生的重大問題。這個版本應適合用於實際工作環境。如果發現任何問題,請回報給公開 Issue Tracker

注意:某些程式庫 (例如 media2) 仍處於 Alpha 版測試階段,原因是其 API 介面尚未定案。我們不建議在實際工作環境中使用 Alpha 版程式庫。在實際工作環境中,程式庫應嚴格避免採用 Alpha 版程式庫,原因是這類程式庫的 API 介面可能會透過與原始碼和二進位檔不相容的方式做出變更。

已修正問題

  • BottomNavigationView 選單在設計支援資料庫中未正確初始化。
  • PositionalDataSource 未正確將前附插入項目處理並加入資料庫。
  • 滑桿不順且沒有回應。
  • 「SlicesProviderCompat.getPinnedSpecs()」不會將使用者 ID 新增至 URI
  • RoutePlayer2:遠端播放功能未切換回本機播放模式。
  • 快取 Slice 剖析功能在操作時異常終止。
  • 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 (AOSP 問題 73961809)
  • 未呼叫 Fragment ViewModel 的 onCleared 問題 (AOSP 問題 74139250)
  • 即使轉接程式為空值,RecyclerView.setRecycledViewPool() 也會增加 pluginCount
  • 如果 ReSoothScroller.onStop 呼叫 stop() 或 startSmoothScroller(),則為 RecyclerView NPE
  • 片段取代交易會在顯示新片段後,先前的片段發生閃爍情形 (Android 開放原始碼計畫問題 74051124)
  • 載入器回呼在 27.1.0 中發生破壞性變更 (AOSP 問題 74135998)
  • 垂直格線檢視畫面組合欄 >1 時,RTL 版面配置無法運作
  • 在 ViewPager 中使用 FragmentPagerAdapter 多次呼叫 onLoaded
  • 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 (來自設計)
    • 遊標轉換器 (來自 support-core-ui)
    • customview (來自 support-core-ui)
    • documentfile (來自 support-core-utils)
    • drawerlayout (來自 support-core-ui)
    • 內插器 (來自 support-core-ui)
    • 載入器 (來自支援片段和核心公用程式)
    • localbroadcastmanager (來自 support-core-utils)
    • 列印 (透過 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,內含元件的新屬性和更新的元件樣式。
    • 我們已新增以下元件:
      • 底部應用程式列
      • 方塊
      • 方塊群組
      • Material 按鈕
      • MaterialCard 檢視畫面
  • Slices 為應用程式提供架構,以便嵌入其他應用程式的範本內容。
    • slices-builders 包含以範本格式建構內容的方法。
    • slices-view 包含呈現該內容的方法。
  • 瀏覽器動作提供通訊協定,讓應用程式開發人員能夠為網址啟動一致 (可自訂) 的內容選單。這項功能必須在瀏覽器應用程式 (例如 Chrome 的開發階段,這項功能仍在開發階段) 中實作,以支援瀏覽器動作。
  • ContextCompat.getSystemService()getSystemServiceName() 允許針對所有 API 級別依類型查詢系統服務。

修正錯誤

  • 未呼叫 Fragment ViewModel 的 onCleared 錯誤 (AOSP 問題 74139250)
  • 在 ViewPager 中用 FragmentPagerAdapter 多次呼叫 onLoaded() (AOSP 問題 74182171)
  • 在特定情況下,RecyclerView 的 LinearLayoutManager 的 smoothScrollToPosition() 會顯示延遲 (來回) 動作 (AOSP 問題 71567765)

修訂版本 27.1.0 版本

(2018 年 2 月)

重要異動

  • Loaders 的基礎實作已改寫為使用 Lifecycle。雖然 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() 方法,可傳回對等對等方法的 NonNull 物件,或擲回 IllegalStateException
  • requireViewById()findViewById()@NonNull Compat 版本已新增至 WindowCompatActivityCompatViewCompat,會在找不到目標時擲回 IllegalArgumentException
  • LoaderCallbacks 方法現在有適當的 @Nullable@NonNull 註解。
  • FileProvider 現在透過新的 <external-media-path> 元素,針對 API 21 及以上版本支援 getExternalMediaDirs()

修正錯誤

  • 在 onCreate 中初始化載入器的片段在 ViewPager 中處於破壞狀態
  • LoaderManager 在 onLoadFinished 中擲回 IllegalStateException
  • LoaderViewModel 無法在 onCleared 中清除載入器
  • 找不到 android.arch.lifecycle.ViewModelStoreOwner 的類別檔案
  • Dialog() onDismiss 關閉後不會立即呼叫
  • 使用可下載的字型時,國家/地區標記表情符號不適用於發布金鑰裝置
  • 偏好設定資料庫使用的屬性不適用於舊版 Android
  • MediaCompat 的 testlib 構件類型記錄有誤 (AOSP 問題 71559905)
  • TypefaceCompatUtil 中的 Google Sans 當機
  • 曝露 Collection 中的 ArraySet 建構函式。
  • updateApi 移除應保留的 .ignore 檔案
  • 在 BrowseFragment 中建立的備援 MainFragment
  • 從 CarRecyclerView 中移除反射功能
  • FragmentManagerImpl.checkStateLoss 的 java.lang.IllegalStateException
  • 使用 android.support.v4.content.PermissionChecker.checkSelfPermission 時出現 Got (未記錄) java.lang.SecurityException
  • RecyclerView IndexOutOfBoundsException,因為 setAdapter 中未清除 State.mPreviousLayoutItemCount (AOSP 問題 37657125)
  • 在 onCreate 中初始化載入器的片段在 ViewPager 中處於破壞狀態 (AOSP 問題 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
  • 為了進行測試,PollingCheck 公用程式是從 Android 開放原始碼計畫的 CTS 轉出。這會在條件逾時內輪詢條件。
  • 新增基礎架構,以便支援使用 PermissionCompatDelegate 的 Android 5.0 免安裝應用程式執行執行階段權限。
  • 現在支援受信任的自訂分頁,並能夠定義應用程式和來源 URI 之間的關係。
  • 使用 AmbientMode 無頭片段可簡化 Android Wear 微光模式支援,藉此支援與使用架構元件相容的微光模式。
  • 我們即將淘汰舊版 V14 API 中的某些已淘汰類別,例如 android.support.v7.NotificationCompat (改用 v4 NotificationCompat)、KeyEventCompatParallelExecutorCompat SearchViewCompat
  • 遷移的 Wear 資訊清單中繼資料常數現在都可以透過 android.support.wear.utils.MetadataConstants 存取。
  • 微光模式支援現在適用於所有活動,而不只是 WearableActivity。詳情請參閱 AmbientMode 參考資源。
  • RoundedDrawable 現已支援 XML 加載。

修正錯誤

  • 應用程式支援資料庫 27 和可下載字型異常終止
  • 更新 SDK 後建立的新專案無法使用可下載字型
  • SpeechRecognizer API 在最新的升級作業中損毀
  • 移除動畫檢視畫面後,在繪圖期間發生片段相關當機情形
  • support-leanback-demos 媒體播放作業已中斷
  • Android 支援資料庫正在將 <meta-data> 加入資訊清單
  • FontResourcesParserCompat 應該要瞭解 android:attes
  • Leanback Glue 不支援暫停鍵
  • 多個套件共用相同構件 ID 時,IDE 中的未解析符號。
  • CarExtendeder 的空值指標例外狀況
  • 建立 MediaController 後,再次隨機播放 / 重複模式設定 PlaybackState
  • 資料庫叢集的預設集區在瀏覽時移至下一個叢集
  • 推薦資訊卡中繼資料遭到截斷
  • RecyclerView.attachViewToParent() 中的 IllegalArgumentException
  • 取消遮蓋 SavedState 時 ClassNotFoundException (AOSP 問題 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 導覽故障
  • 在 建立完成之前,系統會呼叫 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 的參考頁面,內容引用的架構對等項目。
  • Wear UI 程式庫內含類別,可協助您實作在 Wear 裝置上運作的模式和版面配置。詳情請參閱「 使用 Wear UI 資料庫」。
  • Percent 支援模組」已淘汰。這個模組的用戶端應遷移至新的 ConstraintLayout 小工具,該 SDK 是以 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()
  • DAC「寄件」註解對支援資料庫的 25.3.0 / 25.4.0 修訂版本有誤
  • ResourcesCompat.getFont() 擲回例外狀況
  • 工具列標題沒有粗體字型
  • 使用 maxLines 自動調整大小,會產生非預期的結果
  • TextView.checkForRelayout() 中的 NullPointerException
  • AppCompatTextViewAutoSizeHelper.setRawTextSize() 在版面配置期間呼叫 requestLayout()
  • EmojiAppCompatTextView 當機事件
  • 變更文字時,自動調整大小功能不會自動調整
  • Instacart 的螢幕損壞
  • MenuItemCompat 中的 SupportedOperationException
  • NotificationCompat 未完整擷取 API 24 以上版本的動作
  • CoordinatorLayout 錨定版面配置更新的問題