Revisi Support Library Terbaru

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

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

    API baru

    • ListAdapter untuk RecyclerView (beserta AsyncListDiffer) 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 konstruktor ViewModelProvider sebagai alternatif dari penggunaan ViewModelProviders.of()
    • Sekarang Fragment memiliki metode requireContext(), requireActivity(), requireHost(), dan requireFragmentManager(), yang menampilkan objek NonNull dari metode get yang ekuivalen atau melemparkan IllegalStateException.
    • requireViewById(), versi kompatibel @NonNull dari findViewById() telah ditambahkan ke WindowCompat, ActivityCompat, dan ViewCompat, yang akan melemparkan IllegalArgumentException jika target tidak dapat ditemukan.
    • Metode LoaderCallbacks kini memiliki anotasi @Nullable dan @NonNull yang sesuai.
    • FileProvider sekarang mendukung getExternalMediaDirs() 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 melemparkan NullPointerException.
    • IllegalStateException: Fragment belum ditambahkan.
    • Tidak dapat menutup pop-up ikon 'Cast' dengan mengetuk di mana saja pada layar.
    • MediaMetadataCompat melemparkan 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 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 versi Transition untuk transisi fragment, termasuk transisi elemen bersama.
    • Library content paging (android.support.content.ContentPager) memberikan dukungan untuk paging content yang terekspos melalui ContentProvider. 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, termasuk getImportantForAutofill(), isImportantForAutofill(), setAutofillHints(), dan setImportantForAutofill().
    • 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 metode setSeparators().
      • DiffCallback telah ditambahkan agar ArrayObjectAdapter dapat memanfaatkan output yang disediakan oleh DiffUtil.
      • 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, dan PlaybackOverlayFragment.
    • 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 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 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

    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:

    API baru

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