Halaman ini memberikan detail tentang rilis paket Support Library terbaru. Untuk rilis sebelumnya, lihat Arsip Revisi Support Library.
Produksi Revisi 28.0.0
(21 September 2018)
Ini adalah rilis stabil Support Library 28.0.0 dan cocok digunakan
dalam produksi. Versi ini akan menjadi rilis fitur terakhir dalam
paket android.support
, dan developer dianjurkan untuk
bermigrasi ke AndroidX.
Fitur baru
-
AnimatedStateListDrawableCompat
menyediakan transisi animasi antara status drawable. -
VectorDrawableCompat
mendapatkan dukungan untuk gradien serta isi dan goresanColorStateList
.
Revisi 28.0.0 RC 2
(27 Agustus 2018)
Kandidat rilis support library ini dianggap sudah memiliki fitur lengkap dan platform API publiknya sudah stabil. Rilis ini akan dikirimkan sebagai versi stabil final, kecuali jika ada masalah kritis yang mungkin muncul. Rilis ini aman digunakan dalam produksi. Harap laporkan masalah apa pun ke issue tracker publik.
Perbaikan masalah:
- Proguard menghapus konstruktor View Model Application (masalah publik 112230489)
- Memperbaiki status konstanta `AnimatedStateListDrawableCompat`
- Menghapus dependensi media2 dari mediarouter 1.0.0
- `Fragment.getViewLifecycleOwner()` tidak berhenti saat tombol layar utama ditekan (masalah publik 113070421) ([masalah publik 113070421](https://issuetracker.google.com/issues/113070421))
Revisi 28.0.0 RC 1
(6 Agustus 2018)
Kandidat rilis support library ini dianggap sudah memiliki fitur lengkap dan platform API publiknya sudah stabil. Rilis ini akan dikirimkan sebagai versi stabil final, kecuali jika ada masalah kritis yang mungkin muncul. Rilis ini aman digunakan dalam produksi. Harap laporkan masalah apa pun ke issue tracker publik.
Catatan: Beberapa library, seperti media2, tetap dalam tahap alfa karena platform API-nya belum selesai. Penggunaan library alfa dalam produksi tidak direkomendasikan. Library harus sedapat mungkin menghindari ketergantungan pada library alfa dalam produksi, karena tampilan API-nya dapat berubah sehingga tidak kompatibel dengan sumber dan biner.
Perbaikan masalah:
- Menu BottomNavigationView tidak diinisialisasi dengan benar pada design support library
- PositionalDataSource tidak menangani dengan benar sisipan item yang ditambahkan di awal ke dalam database
- Penggeser tersendat dan tidak responsif
- `SlicesProviderCompat.getPinnedSpecs()` tidak menambahkan ID pengguna ke URI
- RoutePlayer2: pemutaran jarak jauh tidak beralih kembali ke pemutaran lokal
- Penguraian slice dalam cache mengalami error saat dijalankan
- Aplikasi Google Penelusuran mengalami error saat merender Slice statis
- ConcurrentModifiedException di library pemilihan RecyclerView saat set data berubah karena penghapusan pilihan
- PreferensiThemeOverlay telah diupdate ke tema material terbaru. Jika tidak ada tema kustom yang disediakan, PreferenceThemeOverlay akan digunakan sebagai tema default.
- Tema PreferenceThemeOverlay.v14 dan PreferenceThemeOverlay.v14.Material sudah tidak digunakan lagi dan digantikan dengan PreferenceThemeOverlay.
- Visibilitas PreferenceGroup sekarang terikat dengan turunannya - menyembunyikan grup induk juga akan mencegah turunannya ditampilkan dalam hierarki. Gunakan Preference.isDitampilkan() untuk mengetahui apakah Preference benar-benar ditampilkan kepada pengguna dalam hierarki.
- Preference.onSetInitialValue(boolean, Object) tidak digunakan lagi dan diganti dengan onSetInitialValue(Object). PreferenceDataStore sekarang juga memulihkan nilai default dengan benar.
Revisi 28.0.0 Beta 1
(Juli 2018)
Rilis beta Support Library ini dianggap sudah memiliki fitur lengkap dan platform API publiknya telah stabil, kecuali jika ada masalah kritis yang mungkin muncul. Meskipun aman digunakan dalam produksi, rilis ini masih mungkin berisi bug. Harap laporkan masalah apa pun ke Issue Tracker publik.
Perbaikan masalah:
- GestureSelectionHelper menggunakan peristiwa pada item yang tidak dapat dipilih
- Slice penggeser dapat memiliki ikon thumb duplikat saat nilai penggeser diperbarui
- IconCompat merusak ikon TYPE_URI
- Error pada Preference saat menggunakan Seekbar
- Error pada Slice.toString()
- OffsettingListUpdateCallback.onMemindahkan() memanggil mCallback.onRemoved(), bukan mCallback.onRemoved() (Masalah 110711937)
Revisi 27.1.1
(April 2018)
Perbaikan masalah:
- AsyncListDiffer tidak memanggil getChangePayload (Masalah AOSP 73961809)
- onCleared ViewModel Fragment tidak dipanggil (Masalah AOSP 74139250)
- RecyclerView.setRecycledViewPool() meningkatkan attachCount meskipun adaptor bernilai null
- RecyclerView NPE jika SmoothScroller.onStop memanggil stop() atau startSmoothScroller()
- Transaksi Penggantian Fragment menyebabkan fragmen sebelumnya berkedip-kedip setelah fragmen baru ditampilkan (Masalah AOSP 74051124)
- Perubahan yang dapat menyebabkan gangguan akibat callback loader 27.1.0 (Masalah AOSP 74135998)
- Tata letak RTL tidak berfungsi saat tampilan petak vertikal menetapkan kolom > 1
- onLoadFinished dipanggil beberapa kali di ViewPager dengan FragmentPagerAdapter
- AsyncListDiffer seharusnya mengirim update setelah menetapkan daftar saat ini (Masalah AOSP 74003309)
- ShareActionProvider memunculkan ClassCastException di 27.1.0
- Perubahan siklus proses fragmen dengan ViewPager (Masalah AOSP 73976255)
Revisi 28.0.0 Alfa 1
(Maret 2018)
Catatan: 28.0.0-alpha1 adalah versi pra-rilis untuk mendukung pratinjau developer Android P. Tampilan API-nya dapat berubah, dan tidak selalu menyertakan fitur atau perbaikan bug dari Support Library versi stabil terbaru.
Perubahan penting
- Seperti disebutkan sebelumnya dalam
pengumuman Android KTX, kami akan terus menggunakan
awalan paket
androidx
di seluruh library kami. Pilihan library baru, termasukheifwriter
danrecyclerview-selection
, akan dimulai dalam paket baru ini. Kami berharap pembagian antaraandroid.*
danandroidx.*
akan memperjelas API mana yang dipaketkan dengan platform, dan mana yang merupakan library statis untuk developer aplikasi yang bekerja di berbagai versi Android. - Kami telah membagi bagian-bagian support-core-ui, support-core-utils, dan
support-compat menjadi library yang lebih kecil. Perubahan ini akan membantu kami mencegah dependensi
library support di masa mendatang. Sekarang kami memiliki library baru berikut:
- asynclayoutinflater (dari support-core-ui)
- collections (dari support-compat)
- coordinatorlayout (dari design)
- cursoradapter (dari support-core-ui)
- customview (dari support-core-ui)
- documentfile (dari support-core-utils)
- drawerlayout (dari support-core-ui)
- interpolator (dari support-core-ui)
- loader (dari support-fragments dan core-utils)
- localbroadcastmanager (dari support-core-utils)
- print (dari support-core-utils)
- slidingpanelayout (dari support-core-ui)
- swiperefreshlayout (dari support-core-ui)
- viewpager (dari support-core-ui)
API baru
recyclerview-selection
menyediakan dukungan pemilihan item untukRecyclerView
. Paket ini menyediakan:- Dukungan untuk membuat, mengubah, memeriksa, dan memantau perubahan pada sekumpulan item yang dipilih dalam daftar RecyclerView.
- Dukungan untuk tindakan multi-pilihan yang intuitif:
- Dengan pilihan berbasis sentuhan, pengguna dapat memilih rentang item dengan gestur tekan lama dan tarik yang intuitif.
- Dengan pilihan band berbasis mouse, pengguna dapat memilih blok item dalam daftar RecyclerView menggunakan tindakan band pointer/lasso mouse tradisional.
- Dukungan untuk perangkat yang mengandalkan sentuhan, termasuk ponsel dan laptop yang mendukung sentuhan, serta perangkat yang berfokus pada pointer.
- HEIF Writer menyediakan dukungan untuk menulis gambar diam format HEIF.
- Library Design
- Kami telah memperkenalkan tema aplikasi baru,
Theme.MaterialComponents
, dengan atribut baru dan gaya yang diperbarui untuk komponen. - Kami telah menambahkan komponen berikut:
- BottomAppBar
- Chip
- ChipGroup
- MaterialButton
- MaterialCardView
- Kami telah memperkenalkan tema aplikasi baru,
- Slice menyediakan framework bagi aplikasi untuk menyematkan konten template dari
aplikasi lain.
- slices-builder berisi metode untuk membuat konten dalam format template.
- slices-view berisi metode untuk menampilkan konten tersebut.
- Tindakan browser menyediakan protokol bagi developer aplikasi untuk meluncurkan menu konteks yang konsisten (tetapi dapat disesuaikan) untuk URL. Fitur ini bergantung pada keberadaan aplikasi browser (seperti Chrome, di mana fitur ini masih dalam pengembangan) yang mengimplementasikan dukungan untuk tindakan browser.
-
ContextCompat.getSystemService()
dangetSystemServiceName()
memungkinkan pencarian layanan sistem menurut jenis di semua level API.
Perbaikan bug
- onCleared ViewModel Fragment tidak dipanggil (Masalah AOSP 74139250)
- onLoadFinished() dipanggil beberapa kali di ViewPager dengan FragmentPagerAdapter (Masalah AOSP 74182171)
- smoothScrollToPosition() LinearLayoutManager RecyclerView menampilkan gerakan yang tidak menentu (maju dan mundur) dalam keadaan tertentu (Masalah AOSP 71567765)
Rilis Revisi 27.1.0
(Februari 2018)
Perubahan Penting
- Implementasi pokok Loader ditulis ulang agar menggunakan Lifecycle. Meskipun API
tidak berubah, ada sejumlah perubahan perilaku:
initLoader()
,restartLoader()
, dandestroyLoader()
sekarang hanya dapat dipanggil di thread utama.onStartLoading()
danonStopLoading()
Loader kini dipanggil saat FragmentActivity/Fragment penampung masing-masing dimulai dan dihentikan.onLoadFinished()
hanya akan dipanggil di antaraonStart()
danonStop
. Akibatnya, transaksi Fragment kini dapat dilakukan dengan aman dionLoadFinished()
.- Metode FragmentController yang terkait dengan Loader kini tidak digunakan lagi.
getDialog()
DialogFragment sekarang akan non-null sampaionDestroyView()
, bukan menjadi null didismiss()
. Anda sekarang dapat menentukan apakah Dialog ditutup secara manual dionStop()
dengan memeriksa apakahgetDialog().isShowing()
menampilkan nilai salah.
API baru
ListAdapter
untukRecyclerView
(besertaAsyncListDiffer
) mempermudah penghitungan perbedaan daftar di thread latar belakang. Hal ini dapat membantu konten animasi RecyclerView Anda berubah secara otomatis, dengan sedikit usaha di UI thread.DiffUtil
digunakan di balik layar.SortedList.ReplaceAll
memungkinkan pembaruan semua data di SortedList, yang menjalankan semua animasi yang sesuai untuk penyisipan, penghapusan, perubahan, dan pemindahan (pemindahan diperlakukan sebagai penghapusan dan penyisipan).- FragmentActivity dan Fragment kini mengimplementasikan
ViewModelStoreOwner
dan kini dapat digunakan dengan konstruktorViewModelProvider
sebagai alternatif penggunaanViewModelProviders.of()
- Fragment kini memiliki metode
requireContext()
,requireActivity()
,requireHost()
, danrequireFragmentManager()
, yang menampilkan objekNonNull
dari metode get yang setara atau menampilkanIllegalStateException
. requireViewById()
, versi compat@NonNull
darifindViewById()
telah ditambahkan keWindowCompat
,ActivityCompat
, danViewCompat
, yang menampilkanIllegalArgumentException
saat target tidak dapat ditemukan.- Metode
LoaderCallbacks
kini memiliki anotasi@Nullable
dan@NonNull
yang sesuai. FileProvider
kini mendukunggetExternalMediaDirs()
di perangkat yang menjalankan API 21 dan yang lebih tinggi melalui elemen<external-media-path>
baru.
Perbaikan bug
- Fragment yang menginisialisasi Loader di onCreate memiliki siklus proses yang rusak di dalam ViewPager
- LoaderManager memunculkan IllegalStateException di onLoadFinished
- LoaderViewModel tidak membersihkan Loader-nya di onCleared
- File class untuk android.arch.lifecycle.ViewModelStoreOwner tidak ditemukan
- onDismiss DialogFragment tidak langsung dipanggil setelah operasi dismiss()
- Emoji bendera negara tidak berfungsi pada perangkat kunci rilis saat menggunakan font yang dapat didownload
- Library Preferences menggunakan atribut yang tidak akan berfungsi di Android versi lama
- Jenis artefak testlib MediaCompat tidak didokumentasikan dengan benar (Masalah AOSP 71559905)
- Google Sans mengalami error di TypefaceCompatUtil
- Constructor ArraySet yang mengambil Collections diekspos.
- updateApi menghapus file .ignore yang seharusnya dipertahankan
- MainFragment yang tidak perlu dibuat di BrowseFragment
- Penggunaan refleksi dari CarRecyclerView dihapus
- java.lang.IllegalStateException pada FragmentManagerImpl.checkStateLoss
- Mendapatkan (tidak terdokumentasi) java.lang.SecurityException saat menggunakan android.support.v4.content.PermissionChecker.checkSelfPermission
- RecyclerView IndexOutOfBoundsException karena State.mPreviousLayoutItemCount tidak dihapus di setAdapter (Masalah AOSP 37657125)
- Fragment yang menginisialisasi Loader di onCreate memiliki siklus proses yang rusak di dalam ViewPager (Masalah AOSP 34831613)
- FragmentManagerImpl.execSingleAction mengalami error
Rilis Revisi 27.0.2
(November 2017)
Perbaikan bug
-
EmojiEditTextHelper
menampilkanNullPointerException
. -
IllegalStateException
: Fragment belum ditambahkan. - Tidak dapat menutup pop-up ikon 'Cast' dengan mengetuk di mana saja pada layar.
-
MediaMetadataCompat
menampilkanBadParcelableException
.
Rilis Revisi 27.0.1
(November 2017)
Perbaikan bug
- LifecycleRegistry berada dalam status yang salah setelah
startActivityForResult()
dipanggil. (Masalah 65665621) - Warna tombol-tombol yang tidak aktif terlalu cerah di level API yang lebih lama.
- Setelah men-scroll, pengguna tidak dapat mengklik item di
RecyclerView
. (Masalah AOSP 66996774) - Pada Talkback, mengklik opsi lain tidak menyebabkan sistem memunculkan pop-up baru atau menambahkan fokus ke opsi baru.
Rilis Revisi 27.0.0
(Oktober 2017)
Diffs API
Perubahan API
- Anotasi nullability telah ditambahkan ke berbagai API, termasuk: Hal ini dapat menyebabkan error kompilasi Kotlin jika jenis nilai yang ditampilkan nullable tidak ditangani dengan benar.
-
Fragment
dapat menggunakan support library versiTransition
untuk transisi fragmen, termasuk transisi elemen bersama. - Library paging konten (
android.support.content.ContentPager
) memberikan dukungan untuk konten paging yang diekspos melaluiContentProvider
. Penggunaan library ini memungkinkan klien menghindari interprocess "pertukaran jendela kursor" yang mahal di UI thread, yang menyediakan library kompatibilitas untuk fitur Android 8.0. -
ViewCompat
kini menambahkan wrapper untuk metode isi otomatis, termasukgetImportantForAutofill()
,isImportantForAutofill()
,setAutofillHints()
, dansetImportantForAutofill()
. -
Leanback
mendapatkan fitur dan polesan baru, dan kehilangan beberapa class yang tidak digunakan lagi, seperti:
-
Picker
kini dapat menggunakan pemisah yang berbeda di antara setiap kolom menggunakan metodesetSeparators()
. -
DiffCallback
telah ditambahkan untuk memungkinkanArrayObjectAdapter
memanfaatkan output yang disediakan olehDiffUtil
. - Penambahan infrastruktur untuk mendukung pemutar media dengan kontrol variabel, dengan menambahkan kontrol opsional untuk memajukan, mengulangi, mengacak, berikutnya, sebelumnya, dan mundur.
- Penghapusan
MediaControllerGlue
, PlaybackControlGlue,PlaybackControlSupportGlue
, danPlaybackOverlayFragment
.
-
- Untuk pengujian, utilitas PollingCheck di-porting dari AOSP CTS. Crawler memeriksa suatu kondisi yang akan terjadi dalam periode waktu tunggu.
- Penambahan infrastruktur untuk mendukung izin runtime pada Aplikasi Instan untuk
Android 5.0, menggunakan
PermissionCompatDelegate
. - Tab khusus tepercaya kini didukung, beserta kemampuan untuk menentukan hubungan antara aplikasi dan URI asal.
- Dukungan mode standby Android Wear disederhanakan melalui penggunaan fragmen headless AmbientMode, yang juga membuat dukungan mode standby kompatibel dengan penggunaan Komponen Arsitektur.
- Tim Wear mengharapkan masukan dari developer tentang perubahan signifikan ini. Untuk informasi selengkapnya, lihat Catatan Rilis Android Wear.
- Beberapa class yang tidak digunakan lagi dihapus seiring beralih dari API lama sebelum V14,
seperti
android.support.v7.NotificationCompat
(sebagai gantinya menggunakanNotificationCompat
v4),KeyEventCompat
,ParallelExecutorCompat
, danSearchViewCompat
. - Konstanta metadata manifes Wear yang dimigrasikan kini tersedia melalui
android.support.wear.utils.MetadataConstants
. - Dukungan mode standby kini tersedia untuk semua Activity, tidak hanya
WearableActivity. Untuk informasi selengkapnya, lihat referensi
AmbientMode
. -
RoundedDrawable
kini mendukung perluasan XML.
Perbaikan bug
- Aplikasi mengalami error pada support library 27 dan font hasil download
- Font hasil download tidak berfungsi untuk project baru yang dibuat setelah SDK diupdate
- SpeechRecognizer API rusak pada upgrade terbaru
- Error terkait fragment selama proses menggambar setelah Tampilan animasi dihapus
- Pemutaran media support-leanback-demos semua rusak
- Android Support Library menambahkan <meta-data> ke dalam manifes
- FontResourcesParserCompat harus memahami android: attrs
- Leanback Glue tidak mendukung tombol input Pause
- Simbol yang tidak terselesaikan dalam IDE ketika beberapa paket memiliki ID artefak yang sama.
- Pengecualian Pointer Null di CarExtender
- Mode acak/ulang yang salah menetapkan PlaybackState setelah MediaController dibuat
- Poster default cluster library memasuki cluster berikutnya saat bernavigasi
- Metadata kartu rekomendasi terpotong
- IllegalArgumentException di RecyclerView.attachViewToParent()
- ClassNotFoundException saat membatalkan marshalling SavedState (Masalah AOSP 37133281)
- Fokus macet di RecyclerView
- Perbaikan ANR di Leanback LayoutManager
Rilis Revisi 26.1.0
(September 2017)
Ini adalah rilis khusus untuk mengintegrasikan Support Library dengan Lifecycle dari Architecture Components. Jika tidak menggunakan library Lifecycle, Anda tidak perlu mengupdate dari 26.0.2. Untuk informasi selengkapnya, lihat Catatan rilis Komponen arsitektur.
Perubahan penting
Fragment
danFragmentActivity
(class dasar untukAppCompatActivity
) sekarang mengimplementasikan antarmukaLifecycleOwner
dari Architecture Components.
Rilis Revisi 26.0.2
(Agustus 2017)
Perbaikan bug
- Ikon menu disederhanakan di Support Library 26.0.0
GuidedAction.multilineDescription
tidak berfungsi dengan baik pada Leanback
Rilis Revisi 26.0.1
(Agustus 2017)
Perbaikan bug
- FontCompat 26.0.0 mengalami error di perangkat O-MR1
- Support Library Design 26.0.0 seharusnya tidak menyertakan dukungan multidex (masalah 63999442))
- AppBarLayout sekarang memiliki padding kiri 300 piksel sejak 26.0.0
- Navigasi PlaybackTransportControl rusak
- Fragment.onCreateView terkadang dipanggil sebelum onCreate selesai
- android.os.BadParcelableException: ClassNotFoundException saat membatalkan marshalling: android.support.v4.media.MediaMetadataCompat
Rilis Revisi 26.0.0
(Juli 2017)
Penting: Support library kini tersedia melalui repositori Maven Google. Anda tidak perlu mendownload repositori dukungan dari SDK Manager. Untuk informasi selengkapnya, lihat Penyiapan Support Library.
Perubahan penting
- Versi SDK minimum ditingkatkan menjadi 14. Akibatnya, banyak API yang ada hanya untuk kompatibilitas dengan API level pra-14 tidak digunakan lagi. Klien API ini harus bermigrasi ke framework yang setara seperti yang tercantum di halaman referensi untuk setiap API yang tidak digunakan lagi.
- Library Wear UI berisi class yang membantu Anda menerapkan pola dan tata letak yang berfungsi di perangkat Wear. Untuk mengetahui informasi selengkapnya, lihat Menggunakan Library Wear UI.
- Modul Dukungan Percent tidak digunakan lagi. Klien modul ini sebaiknya bermigrasi ke widget
ConstraintLayout
baru, yang disediakan sebagai artefak terpisah di SDK Manager. android.support.v7.app.NotificationCompat
dan class penampungnya tidak digunakan lagi serta akan dihapus dalam rilis mendatang:- Gunakan
NotificationCompat.Builder
, bukanv7.app.NotificationCompat.Builder
. Fungsionalitas yang sebelumnya mengandalkan penggunaan AppCompat Builder v7 kini digabung ke dalam Compat Builder v4. -
DecoratedCustomViewStyle
telah dipindahkan ke paketandroid.support.v4.app
. -
MediaStyle
danDecoratedMediaCustomViewStyle
kini menjadi bagian dari library media-compat dan dapat ditemukan dalam paket android.support.v4.media.app.
- Gunakan
API baru
- Flag boolean
fastScrollEnabled
baru untukRecyclerView
. Jika diaktifkan,fastScrollHorizontalThumbDrawable
,fastScrollHorizontalTrackDrawable
,fastScrollVerticalThumbDrawable
, danfastScrollVerticalTrackDrawable
harus ditetapkan.
Diffs API
Perbaikan bug
- Loop tanpa henti di RecyclerView.toString()
- ResourceNotFoundException menjalankan project Kotlin di AVD API 16 setelah mengupgrade ke Canary 6
- java.lang.AssertionError dalam tampilan desain dengan support library 26.0.0-beta2
- Pratinjau tata letak Android Studio rusak untuk widget Support Library
- Preference.setSingleLineTitle() diabaikan jika Preference tidak dibuat dengan atribut
- Anotasi "Sejak" DAC salah untuk Support Library revisi 25.3.0 / 25.4.0
- ResourcesCompat.getFont() memunculkan pengecualian
- Judul toolbar tidak dalam huruf tebal
- Penentuan ukuran otomatis dengan maxLines memberikan hasil yang tidak diharapkan
- NullPointerException di TextView.checkForRelayout()
- AppCompatTextViewAutoSizeHelper.setRawTextSize() memanggil requestLayout() selama tata letak
- EmojiAppCompatTextView mengalami error
- Autosize TextView tidak otomatis menyesuaikan saat teks diubah
- Gangguan layar di Instacart
- UnsupportedOperationException di MenuItemCompat
- NotificationCompat tidak sepenuhnya mengekstrak tindakan di API 24 atau yang lebih tinggi
- Masalah anchoring CoordinatorLayout di pembaruan tata letak