Halaman ini menjelaskan rilis paket Support Library versi 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 merupakan rilis fitur terakhir pada
paket android.support
, dan developer dianjurkan untuk
bermigrasi ke AndroidX.
Fitur baru
-
AnimatedStateListDrawableCompat
menyediakan transisi animasi di antara status drawable. -
VectorDrawableCompat
mendapatkan dukungan untuk gradien serta bentuk isian dan goresanColorStateList
.
Revisi 28.0.0 RC 2
(27 Agustus 2018)
Kandidat rilis support library ini dianggap telah memiliki fitur lengkap dan antarmuka API publiknya sudah stabil. Rilis ini akan dikirimkan sebagai versi stabil final, kecuali jika ada masalah kritis yang mungkin muncul. Rilis ini aman untuk digunakan dalam produksi. Silakan laporkan masalah apa pun ke pelacak masalah 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 telah memiliki fitur lengkap dan antarmuka API publiknya sudah stabil. Rilis ini akan dikirimkan sebagai versi stabil final, kecuali jika ada masalah kritis yang mungkin muncul. Rilis ini aman untuk digunakan dalam produksi. Silakan laporkan masalah apa pun ke pelacak masalah publik.
Catatan: Beberapa library, seperti media2, tetap dalam tahap alfa karena antarmuka API-nya belum selesai. Penggunaan library alfa dalam produksi tidak direkomendasikan. Library harus sedapat mungkin menghindari ketergantungan pada library alfa dalam produksi, mengingat antarmuka API-nya dapat berubah sehingga tidak kompatibel dengan kode sumber dan binernya.
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
- ConcurrentModificationException di library pemilihan RecyclerView saat set data berubah akibat 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.isShown() 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 antarmuka API publiknya telah stabil, kecuali jika ada masalah penting yang mungkin muncul. Meskipun aman digunakan dalam produksi, rilis ini masih mungkin berisi bug. Silakan laporkan masalah apa pun ke pelacak masalah 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.onMoved() memanggil mCallback.onRemoved(), bukan mCallback.onMoved() (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 Fragmen menyebabkan fragmen sebelumnya berkedip-kedip setelah fragmen baru ditampilkan (Masalah AOSP 74051124)
- Perubahan yang dapat menyebabkan gangguan akibat callback loader di 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 melemparkan 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-alfa1 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. Untuk detail terkait pratinjau developer P, lihat catatan rilis.
Perubahan penting
- Seperti disebutkan sebelumnya dalam
pengumuman Android KTX, kami akan terus menggunakan
awalan paket
androidx
di seluruh library. Sejumlah library baru, termasukheifwriter
danrecyclerview-selection
, akan dimulai dalam paket baru ini. Kami berharap pembagian antaraandroid.*
danandroidx.*
semakin memperjelas API mana yang terpaket bersama platform, dan yang merupakan library statis bagi developer aplikasi yang bekerja pada berbagai versi Android. - Kami telah memecah bagian-bagian support-core-ui, support-core-utils, dan
support-compat menjadi library yang lebih kecil. Perubahan ini akan membantu kami mencegah dependensi
support library 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 jajaran 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 mengandalkan pointer.
- HEIF Writer menyediakan dukungan untuk menulis gambar diam format HEIF.
- Library Design
- Kami memperkenalkan tema aplikasi baru,
Theme.MaterialComponents
, dengan atribut baru dan gaya yang diperbarui untuk aneka komponen. - Kami menambahkan komponen berikut:
- BottomAppBar
- Chip
- ChipGroup
- MaterialButton
- MaterialCardView
- Kami 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.
ContextCompat.getSystemService()
dan getSystemServiceName()
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 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()
hanya dapat dipanggil pada thread utama.onStartLoading()
danonStopLoading()
Loader sekarang akan dipanggil jika FragmentActivity/Fragment penampungnya, dimulai dan dihentikan secara berturut-turut.onLoadFinished()
hanya akan dipanggil di antaraonStart()
danonStop
. Akibatnya, transaksi Fragment sekarang dapat dilakukan dengan aman dionLoadFinished()
.- Metode FragmentController yang terkait dengan Loader sekarang tidak digunakan lagi.
getDialog()
di DialogFragment sekarang akan non-null sampaionDestroyView()
, bukan menjadi null dalamdismiss()
. Sekarang Anda dapat mengetahui apakah Dialog ditutup secara manual dionStop()
dengan memeriksa apakahgetDialog().isShowing()
mengembalikan nilai salah.
API baru
ListAdapter
untukRecyclerView
(besertaAsyncListDiffer
) mempermudah penghitungan perbedaan daftar di thread latar belakang. Hasilnya, dengan sedikit usaha di thread UI, konten animasi RecyclerView Anda dapat berubah secara otomatis.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 sekarang menerapkan
ViewModelStoreOwner
dan dapat digunakan dengan konstruktorViewModelProvider
sebagai alternatif dari penggunaanViewModelProviders.of()
- Sekarang Fragment memiliki metode
requireContext()
,requireActivity()
,requireHost()
, danrequireFragmentManager()
, yang menampilkan objekNonNull
dari metode get yang ekuivalen atau melemparkanIllegalStateException
. requireViewById()
, versi kompatibel@NonNull
darifindViewById()
telah ditambahkan keWindowCompat
,ActivityCompat
, danViewCompat
, yang akan melemparkanIllegalArgumentException
jika target tidak dapat ditemukan.- Metode
LoaderCallbacks
kini memiliki anotasi@Nullable
dan@NonNull
yang sesuai. FileProvider
sekarang mendukunggetExternalMediaDirs()
di perangkat yang menjalankan API 21 dan yang lebih tinggi melalui elemen<external-media-path>
.
Perbaikan bug
- Fragment yang menginisialisasi Loader di onCreate memiliki siklus proses yang rusak di dalam ViewPager
- LoaderManager memunculkan IllegalStateException di onLoadFinished
- LoaderViewModel tidak menghapus 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 hasil download
- Library Preference 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 java.lang.SecurityException (tidak didokumentasikan) 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
melemparkanNullPointerException
. -
IllegalStateException
: Fragment belum ditambahkan. - Tidak dapat menutup pop-up ikon 'Cast' dengan mengetuk di mana saja pada layar.
-
MediaMetadataCompat
melemparkanBadParcelableException
.
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 membacakan jendela pop-up baru atau menambahkan fokus ke opsi baru.
Rilis Revisi 27.0.0
(Oktober 2017)
Perbedaan API
Perubahan API
- Anotasi Nullability ditambahkan ke berbagai API, termasuk: Hal ini dapat menyebabkan error kompilasi di Kotlin jika jenis nilai nullable yang ditampilkan tidak ditangani dengan baik.
-
Fragment
dapat menggunakan support library versiTransition
untuk transisi fragment, termasuk transisi elemen bersama. - Library content paging (
android.support.content.ContentPager
) memberikan dukungan untuk paging content yang terekspos melaluiContentProvider
. Penggunaan library ini memungkinkan klien menghindari antar-proses “pertukaran jendela kursor” yang mahal pada thread UI, yang menyediakan library kompatibilitas untuk fitur Android 8.0. -
ViewCompat
sekarang menambahkan wrapper untuk metode isi otomatis, termasukgetImportantForAutofill()
,isImportantForAutofill()
,setAutofillHints()
, dansetImportantForAutofill()
. -
Leanback
mendapatkan fitur dan polesan baru, serta kehilangan beberapa kelas yang tidak digunakan lagi, seperti:
-
Picker
sekarang dapat menggunakan pemisah berbeda antara setiap kolom menggunakan metodesetSeparators()
. -
DiffCallback
telah ditambahkan agarArrayObjectAdapter
dapat memanfaatkan output yang disediakan olehDiffUtil
. - Penambahan infrastruktur untuk mendukung pemutar media dengan kontrol variabel, dengan menambahkan kontrol opsional untuk maju cepat, ulangi, acak, berikutnya, sebelumnya, dan putar mundur.
- Penghapusan
MediaControllerGlue
, PlaybackControlGlue,PlaybackControlSupportGlue
, danPlaybackOverlayFragment
.
-
- Untuk pengujian, utilitas PollingCheck di-porting dari AOSP CTS. Utilitas ini mengumpulkan informasi kondisi yang akan terjadi dalam rentang waktu tunggu.
- Penambahan infrastruktur untuk mendukung izin waktu proses 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 menjadikan dukungan mode standby kompatibel dengan penggunaan Architecture Components.
- 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 dihentikannya API lama pra-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
sekarang 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 tak terselesaikan dalam IDE ketika beberapa paket berbagi 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 pada RecyclerView.attachViewToParent()
- ClassNotFoundException saat membatalkan marshall 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 melakukan update dari versi 26.0.2. Untuk informasi selengkapnya, lihat Catatan rilis Architecture Components.
Perubahan penting
Fragment
danFragmentActivity
(class dasar untukAppCompatActivity
) sekarang menerapkan 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 semestinya 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 marshall: 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 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
. Fungsi yang sebelumnya mengandalkan penggunaan AppCompat Builder v7 kini digabung ke dalam Compat Builder v4. -
DecoratedCustomViewStyle
telah dipindahkan ke paketandroid.support.v4.app
. -
MediaStyle
danDecoratedMediaCustomViewStyle
sekarang 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.
Perbedaan API
Perbaikan bug
- Loop tanpa henti di RecyclerView.toString()
- ResourceNotFoundException menjalankan project Kotlin di AVD API 16 setelah upgrade ke Canary 6
- java.lang.AssertionError pada 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 "Since" 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