本頁提供有關最新支援資料庫套件版本的詳細資料。如需較舊的版本,請參閱 支援資料庫修訂版本封存內容。
修訂版本 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 依附元件
- 按下主畫面按鈕 (公開問題 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
套件前置字串。這個全新套件會推出新的程式庫,包括heifwriter
和recyclerview-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
RecyclerView
的ListAdapter
(以及AsyncListDiffer
) 可讓您更輕鬆地計算背景執行緒上的差異。這些做法可協助您在 RecyclerView 中為內容自動做出變更,且在 UI 執行緒上幾乎不需要作業。他們會在背景使用DiffUtil
。SortedList.ReplaceAll
可讓您更新 SortedList 中的所有資料,此函式會執行所有插入、移除、變更和移動的動畫 (移動作業會視為移除和插入)。- FragmentActivity 和 Fragment 現已導入
ViewModelStoreOwner
,並可搭配ViewModelProvider
建構函式使用,做為使用ViewModelProviders.of()
的替代方案。 - 片段現在有
requireContext()
、requireActivity()
、requireHost()
和requireFragmentManager()
方法,可傳回對等對等方法的NonNull
物件,或擲回IllegalStateException
。 requireViewById()
、findViewById()
的@NonNull
Compat 版本已新增至WindowCompat
、ActivityCompat
和ViewCompat
,會在找不到目標時擲回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、PlaybackControlSupportGlue
和PlaybackOverlayFragment
。
-
- 為了進行測試,PollingCheck 公用程式是從 Android 開放原始碼計畫的 CTS 轉出。這會在條件逾時內輪詢條件。
- 新增基礎架構,以便支援使用
PermissionCompatDelegate
的 Android 5.0 免安裝應用程式執行執行階段權限。 - 現在支援受信任的自訂分頁,並能夠定義應用程式和來源 URI 之間的關係。
- 使用 AmbientMode 無頭片段可簡化 Android Wear 微光模式支援,藉此支援與使用架構元件相容的微光模式。
- Wear 團隊會針對這項重大變更,尋求開發人員的意見回饋。 詳情請參閱Android Wear 版本資訊。
- 我們即將淘汰舊版 V14 API 中的某些已淘汰類別,例如
android.support.v7.NotificationCompat
(改用 v4NotificationCompat
)、KeyEventCompat
、ParallelExecutorCompat
和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 更新。詳情請參閱架構元件版本資訊。
重要異動
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 導覽故障
- 在 建立完成之前,系統會呼叫 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
及其所屬類別已淘汰,並將在日後推出的版本中移除:- 使用
NotificationCompat.Builder
,而非v7.app.NotificationCompat.Builder
。原先仰賴 v7 AppCompat Builder 的功能,現已併入 v4 Compat 建構工具。 -
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()
- DAC「寄件」註解對支援資料庫的 25.3.0 / 25.4.0 修訂版本有誤
- ResourcesCompat.getFont() 擲回例外狀況
- 工具列標題沒有粗體字型
- 使用 maxLines 自動調整大小,會產生非預期的結果
- TextView.checkForRelayout() 中的 NullPointerException
- AppCompatTextViewAutoSizeHelper.setRawTextSize() 在版面配置期間呼叫 requestLayout()
- EmojiAppCompatTextView 當機事件
- 變更文字時,自動調整大小功能不會自動調整
- Instacart 的螢幕損壞
- MenuItemCompat 中的 SupportedOperationException
- NotificationCompat 未完整擷取 API 24 以上版本的動作
- CoordinatorLayout 錨定版面配置更新的問題