Revisi Support Library Terbaru

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 goresan ColorStateList.

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, termasuk heifwriter dan recyclerview-selection, akan dimulai dalam paket baru ini. Kami berharap pembagian antara android.* dan androidx.* 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 untuk RecyclerView. 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
  • 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() 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 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(), dan destroyLoader() sekarang hanya dapat dipanggil di thread utama.
    • onStartLoading() dan onStopLoading() Loader kini dipanggil saat FragmentActivity/Fragment penampung masing-masing dimulai dan dihentikan.
    • onLoadFinished() hanya akan dipanggil di antara onStart() dan onStop. Akibatnya, transaksi Fragment kini dapat dilakukan dengan aman di onLoadFinished().
    • Metode FragmentController yang terkait dengan Loader kini tidak digunakan lagi.
  • getDialog() DialogFragment sekarang akan non-null sampai onDestroyView(), bukan menjadi null di dismiss(). Anda sekarang dapat menentukan apakah Dialog ditutup secara manual di onStop() dengan memeriksa apakah getDialog().isShowing() menampilkan nilai salah.

API baru

  • ListAdapter untuk RecyclerView (beserta AsyncListDiffer) 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 konstruktor ViewModelProvider sebagai alternatif penggunaan ViewModelProviders.of()
  • Fragment kini memiliki metode requireContext(), requireActivity(), requireHost(), dan requireFragmentManager(), yang menampilkan objek NonNull dari metode get yang setara atau menampilkan IllegalStateException.
  • requireViewById(), versi compat @NonNull dari findViewById() telah ditambahkan ke WindowCompat, ActivityCompat, dan ViewCompat, yang menampilkan IllegalArgumentException saat target tidak dapat ditemukan.
  • Metode LoaderCallbacks kini memiliki anotasi @Nullable dan @NonNull yang sesuai.
  • FileProvider kini mendukung getExternalMediaDirs() 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 menampilkan NullPointerException.
  • IllegalStateException: Fragment belum ditambahkan.
  • Tidak dapat menutup pop-up ikon 'Cast' dengan mengetuk di mana saja pada layar.
  • MediaMetadataCompat menampilkan BadParcelableException.

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 versi Transition untuk transisi fragmen, termasuk transisi elemen bersama.
  • Library paging konten (android.support.content.ContentPager) memberikan dukungan untuk konten paging yang diekspos melalui ContentProvider. 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, termasuk getImportantForAutofill(), isImportantForAutofill(), setAutofillHints(), dan setImportantForAutofill().
  • 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 metode setSeparators().
    • DiffCallback telah ditambahkan untuk memungkinkan ArrayObjectAdapter memanfaatkan output yang disediakan oleh DiffUtil.
    • 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, dan PlaybackOverlayFragment.
  • 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 menggunakan NotificationCompat v4), KeyEventCompat, ParallelExecutorCompat, dan SearchViewCompat.
  • 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

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:

API baru

  • Flag boolean fastScrollEnabled baru untuk RecyclerView. Jika diaktifkan, fastScrollHorizontalThumbDrawable, fastScrollHorizontalTrackDrawable, fastScrollVerticalThumbDrawable, dan fastScrollVerticalTrackDrawable 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