Apa itu Jetifier? Misalnya, untuk membuat proyek baru menggunakan dependensi paket androidx, proyek baru ini perlu menambahkan baris berikut ke file gradle.properties :
IIRC, Jetifier adalah teknologi Googly yang tidak terdokumentasi yang seharusnya secara otomatis mengonversi dependensi transitif untuk menggunakan pustaka AndroidX. Misalnya, Anda memiliki implementation "com.commonsware.cwac:document:0.3.0"file dependencies. Versi pustaka tersebut memiliki ketergantungan transitif pada com.android.support:support-annotations:27.0.2. Namun, Anda ingin menggunakan androidx.annotation:annotationsebagai bagian dari penggunaan dependensi AndroidX lainnya. Jetifier entah bagaimana akan memperbarui com.commonsware.cwac:documentuntuk digunakan androidx.annotation:annotation.
CommonsWare
Jawaban:
68
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 .
Anda tidak benar-benar menjawab pertanyaan "Apa itu Jetifier?", Hanya membahas tentang AndroidX dan Jetpack.
David Miguel
2
@DavidMiguel Saya telah memberikan jawaban untuk pertanyaan utama yang diajukan, apa artinya - "aktifkan jetifier" ?. Meskipun jika menurut Anda jawaban saya sebagian, saya akan memperbarui jawaban saya sesuai dengan itu.
silwar
72
Dengan asumsi bahwa Anda sudah familiar dengan AndroidX. Jika tidak, silakan lihat @ posting ini .
Jetifierakan mengonversi support librariessemua dependensi Anda menjadi AndroidXotomatis, jika Anda tidak menyetelnya ke truemaka proyek Anda akan memiliki keduanya, dukungan ( tidak berlaku lagi setelah versi 28.0.0 ) dan paket AndroidX , yang redundan.
Sebagai contoh
Jika Anda memiliki PhotoView.javaketergantungan Anda. Itu menggunakan pustaka dukungan AppCompatImageView.
Kelas ini sekarang dipindahkan ke androidxpaket, jadi bagaimana cara PhotoViewmendapatkan 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.AppCompatImageViewmenjadi androidx.appcompat.widget.AppCompatImageViewsaat membangun proyek.
Lihat posting ini untuk memahami lebih lanjut tentang AndroidX.
Info
Kode Anda mungkin menunjukkan kesalahan waktu kompilasi setelah mengaktifkan Jetifier saat menggunakan kelas dependensi. yang dapat Anda hapus dengan menghapus .idea, .gradledan menyinkronkan ulang proyek.
Anda dapat mengatasi error waktu kompilasi dengan menghapus .idea / libraries dan menyinkronkan ulang Gradle.
Clo Knibbe
1
Saya pikir Jetifier bekerja pada waktu pembuatan dan bukan pada waktu proses seperti yang disebutkan di sini. Anda bisa menggunakan android.enableJetifier = true pada Gradle atau menggunakan alat mandiri jetifier developer.android.com/studio/command-line/jetifier untuk bermigrasi ke androidx. Kedua opsi ini menggantikan nama paket pada waktu pembuatan sehingga pustaka dukungan lama bahkan bukan bagian dari pengemasan.
Nishanth
6
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 .
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: -
The jetifier adalah alat yang berguna yang secara otomatis bermigrasi Anda dependenciesuntukAndroidX 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.propertiesfile Anda . Bendera pertama memberi tahu Plugin Android untuk menggunakan AndroidXpaket sebagai ganti AppCompat, dan tanda kedua akan mengaktifkan Jetifier:
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 androidXdan Produsen menggunakan support. Misalnya ketika proyek Anda di AndroidXingin menggunakan dependensi yang menggunakan support librarysebagai ganti AndroidX[Contoh]
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
.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
Untuk menggunakan AndroidX dalam sebuah proyek, kita harus menyetel targetSdkVersion untuk proyek kita ke 28 dan menambahkan 2 baris berikut di file gradle.properties .
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
sumber
Dengan asumsi bahwa Anda sudah familiar dengan
AndroidX
. Jika tidak, silakan lihat @ posting ini .Sebagai contoh
Jika Anda memiliki
PhotoView.java
ketergantungan Anda. Itu menggunakan pustaka dukunganAppCompatImageView
.Kelas ini sekarang dipindahkan ke
androidx
paket, jadi bagaimana caraPhotoView
mendapatkan androidxAppCompatImageView
? Dan aplikasi masih berjalan di perangkat.Siapa yang membuat ini lari?
Jetifier akan dikonversi
android.support.v7.widget.AppCompatImageView
menjadiandroidx.appcompat.widget.AppCompatImageView
saat membangun proyek.Kesimpulan
Mengaktifkan Jetifier penting saat Anda bermigrasi dari Pustaka Dukungan ke AndroidX .
Lihat posting ini untuk memahami lebih lanjut tentang AndroidX.
Info
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.sumber
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 .
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: -
sumber
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 menggunakanAndroidX
paket sebagai gantiAppCompat
, dan tanda kedua akan mengaktifkanJetifier
:Lihat ini , posting ini untuk memahami lebih lanjut tentang AndroidX
sumber
Dari dokumen resmi
Ini berguna untuk kompatibilitas. Saat Konsumen menggunakan
androidX
dan Produsen menggunakansupport
. Misalnya ketika proyek Anda diAndroidX
ingin menggunakan dependensi yang menggunakansupport library
sebagai gantiAndroidX
[Contoh]sumber
Tambahkan dua baris ini android.useAndroidX = true
android.enableJetifier = true
di buid.gradle Ini berhasil untuk saya
sumber