Apa itu Jetifier? Misalnya, untuk membuat proyek baru menggunakan dependensi paket androidx, proyek baru ini perlu menambahkan baris berikut ke file gradle.properties :
android.enableJetifier=true
Jadi apa artinya - "aktifkan jetifier"?
Jawaban:
Google I / O (18) tahun ini, Google telah mengumumkan Jetpack yang merupakan set / kumpulan perpustakaan untuk membuat hidup pengembang lebih mudah.
Jetpack menyertakan komponen arsitektur Android yang diperkenalkan sebelumnya (ViewModel, Room, Paging, LiveData, dll.) Serta komponen arsitektur yang baru diperkenalkan seperti WorkManager, Navigasi. Selain dari Jetpack ini juga memiliki kumpulan pustaka lain seperti AndroidX, AndroidKTX dll.
AndroidX adalah struktur paket baru untuk pustaka dukungan Android seperti dukungan, penyatuan data, desain, dll.
misalnya sekarang di lingkungan pengembang akan menggunakan androidx.databinding. alih-alih android.databinding.sambil mengimpor perpustakaan dalam proyek kami
Ini memungkinkan Google untuk menambahkan SemVer atau Semantic Versioning dalam paket library yang ada. Untuk pengembang, ini berarti kami tidak harus menggunakan versi pustaka dukungan yang sama untuk semua pustaka dukungan. Setiap dukungan atau lebih baik mengatakan pustaka AndroidX akan mempertahankan versinya sendiri.
Keuntungan lain bagi pengembang adalah kami tidak perlu peduli tentang mempertahankan versi yang sama untuk semua pustaka dukungan dalam proyek kami.
Tentang Jetifier, ini mengubah semua paket dukungan ketergantungan pada waktu pembuatan. Sesuai dokumentasi resmi Jetifier
Alat Jetifier memigrasikan pustaka yang bergantung pada pustaka dukungan untuk mengandalkan paket AndroidX yang setara. Alat ini memungkinkan Anda memigrasi pustaka individual secara langsung, daripada menggunakan plugin gradle Android yang dipaketkan dengan Android Studio.
Untuk menggunakan AndroidX dalam sebuah proyek, kita harus menyetel targetSdkVersion untuk proyek kita ke 28 dan menambahkan 2 baris berikut di file gradle.properties .
android.useAndroidX=true
android.enableJetifier=true
Saya harap ini akan menjawab pertanyaan Anda.
EDIT
Tautan ini memiliki pemetaan semua komponen pustaka dukungan dengan bagian penghitung AndroidX mereka.
Juga silakan lihat blog ini untuk penjelasan rinci tentang AndroidX
Dengan asumsi bahwa Anda sudah familiar dengan AndroidX
. Jika tidak, silakan lihat @ posting ini .
Jetifier
akan mengonversisupport libraries
semua dependensi Anda menjadiAndroidX
otomatis, jika Anda tidak menyetelnya ketrue
maka proyek Anda akan memiliki keduanya, dukungan ( tidak berlaku lagi setelah versi 28.0.0 ) dan paket AndroidX , yang redundan.
Jika Anda memiliki PhotoView.java
ketergantungan Anda. Itu menggunakan pustaka dukungan AppCompatImageView
.
import android.support.v7.widget.AppCompatImageView;
Kelas ini sekarang dipindahkan ke androidx
paket, jadi bagaimana cara PhotoView
mendapatkan androidx AppCompatImageView
? Dan aplikasi masih berjalan di perangkat.
Siapa yang membuat ini lari?
Jetifier , yang mengonversi semua paket dukungan dependensi pada waktu pembuatan.
Jetifier akan dikonversi android.support.v7.widget.AppCompatImageView
menjadi androidx.appcompat.widget.AppCompatImageView
saat membangun proyek.
Mengaktifkan Jetifier penting saat Anda bermigrasi dari Pustaka Dukungan ke AndroidX .
Lihat posting ini untuk memahami lebih lanjut tentang AndroidX.
Kode Anda mungkin menunjukkan kesalahan waktu kompilasi setelah mengaktifkan Jetifier saat menggunakan kelas dependensi. yang dapat Anda hapus dengan menghapus .idea
, .gradle
dan menyinkronkan ulang proyek.
Jetifier membantu dalam memigrasi proyek android ke AndroidX .
Jetifier membantu dalam membuat perpustakaan pihak ke-3 kompatibel dengan proyek AndroidX Anda.
Jika Anda tidak menggunakan pustaka pihak ketiga dalam proyek android Anda, Anda tidak perlu menggunakan Jetifier karena Jetifier hanya membantu dalam "membuat pustaka pihak ketiga" yang kompatibel dengan proyek Anda jika Anda bermigrasi ke AndroidX. Jadi untuk membuat proyek Anda menggunakan Jetifier, Anda menulis kode di bawah ini di gradle.properties .
android.enableJetifier=true
android.useAndroidX=true
Jika Anda tidak bermigrasi ke AndroidX dan menggunakan cara sebelumnya menggunakan pustaka Android (misalnya: com.android.support ), pustaka pihak ketiga ini tidak perlu dibuat kompatibel karena pustaka pihak ketiga ini sudah kompatibel dengan cara sebelumnya dari menggunakan perpustakaan Android. Dalam hal ini, Anda tidak perlu menggunakan Jetifier, Jadi sekarang, Anda tidak perlu menulis baris yang diberikan di atas atau Anda cukup menulis seperti di bawah ini untuk mengubah nilai di masa mendatang untuk pindah ke androidx: -
android.enableJetifier=false
android.useAndroidX=false
Jetifier
The jetifier adalah alat yang berguna yang secara otomatis bermigrasi Anda dependencies
untukAndroidX
saat membangun. Tanpanya, Anda memerlukan setiap ketergantungan yang Anda gunakan untuk memiliki versi AndroidX sebelum Anda dapat bermigrasi, dan itu mungkin tidak akan terjadi untuk beberapa waktu.
Ada batasan penting untuk diperhatikan: jetifier hanya berfungsi pada artefak yang dikemas. Ini tidak berfungsi pada kode sumber Anda, yang diharapkan untuk Anda perbarui sendiri
untuk mengaktifkan AndroidX, Anda perlu menambahkan 2 tanda ke gradle.properties
file Anda . Bendera pertama memberi tahu Plugin Android untuk menggunakan AndroidX
paket sebagai ganti AppCompat
, dan tanda kedua akan mengaktifkan Jetifier
:
android.useAndroidX=true
android.enableJetifier=true
Lihat ini , posting ini untuk memahami lebih lanjut tentang AndroidX
Dari dokumen resmi
Jika tanda ini disetel ke true, plugin Android secara otomatis memigrasikan library pihak ketiga yang ada untuk menggunakan dependensi AndroidX dengan menulis ulang binernya. Bendera ini salah secara default jika tidak ditentukan.
Ini berguna untuk kompatibilitas. Saat Konsumen menggunakan androidX
dan Produsen menggunakan support
. Misalnya ketika proyek Anda di AndroidX
ingin menggunakan dependensi yang menggunakan support library
sebagai ganti AndroidX
[Contoh]
Tambahkan dua baris ini android.useAndroidX = true
android.enableJetifier = true
di buid.gradle Ini berhasil untuk saya
implementation "com.commonsware.cwac:document:0.3.0"
filedependencies
. Versi pustaka tersebut memiliki ketergantungan transitif padacom.android.support:support-annotations:27.0.2
. Namun, Anda ingin menggunakanandroidx.annotation:annotation
sebagai bagian dari penggunaan dependensi AndroidX lainnya. Jetifier entah bagaimana akan memperbaruicom.commonsware.cwac:document
untuk digunakanandroidx.annotation:annotation
.