Apa itu AndroidX?


255

Saya membaca tentang perpustakaan ruang Android. Saya melihat mereka mengubah paket androidmenjadi androidx. Saya tidak mengerti itu. Bisakah seseorang menjelaskannya?

implementation "androidx.room:room-runtime:$room_version"
annotationProcessor "androidx.room:room-compiler:$room_version"

Bahkan ini tersedia dengan androidpaket juga.

implementation "android.arch.persistence.room:runtime:$room_version"
annotationProcessor "android.arch.persistence.room:compiler:$room_version"
  • Apa yang membutuhkan kemasan perpustakaan dukungan baru di androidxbukan android?
  • Gunakan faktor kasus dan pengaruh dalam proyek yang ada.

4
Baca developer.android.com/topic/libraries/support-library/… . androidx.*adalah hierarki paket untuk pustaka dukungan. Mereka semua akan datang paket yang sama seperti kita datang ke era androidx(Seperti komponen arsitektur, perpustakaan dukungan lainnya).
ADM

3
Apa yang sebenarnya tidak Anda mengerti? Mengapa mereka mengubah paket?
Rohit5k2

@ADM mengapa mereka beralih ke androidxpaket dari CORE android.
Khemraj

2
Mereka hanya mendesain ulang struktur paket demi kesederhanaan. Ini juga diumumkan di IO 2018 jika Anda ingin melihatnya. Terima kasih
ADM

Jawaban:


334

AndroidX - Android Extension Library

Dari dokumentasi AndroidX

Kami meluncurkan struktur paket baru untuk membuatnya lebih jelas paket mana yang dibundel dengan sistem operasi Android, dan yang dipaket dengan APK aplikasi Anda. Ke depan, hirarki paket android. * Akan dicadangkan untuk paket Android yang dikirimkan bersama dengan sistem operasi. Paket-paket lain akan dikeluarkan dalam hirarki paket androidx. * Baru sebagai bagian dari perpustakaan AndroidX.

Membutuhkan AndroidX

AndroidX adalah pustaka yang dirancang ulang untuk membuat nama paket lebih jelas. Jadi mulai sekarang hirarki android hanya akan untuk kelas default android, yang dilengkapi dengan sistem operasi android dan perpustakaan / dependensi lainnya akan menjadi bagian dari androidx (lebih masuk akal). Jadi mulai sekarang semua perkembangan baru akan diperbarui di androidx.

com.android.support. **: androidx.
com.android.support:appcompat-v7: androidx.appcompat: appcompat com.android.support:recyclerview-v7: androidx.recyclerview: recyclerview com.android.support:design: com.google.android.material: material

Pemetaan Artifact lengkap untuk paket AndroidX

AndroidX menggunakan versi Semantik

Sebelumnya, support librarydigunakan versi SDK tetapi AndroidX menggunakanSemantic-version . Ini akan kembali versi dari 28.0.0 → 1.0.0.

Cara memigrasi proyek saat ini

Di Android Studio 3.2 (September 2018), ada opsi langsung untuk memigrasi proyek yang ada ke AndroidX. Refactor ini semua paket secara otomatis.

Sebelum Anda bermigrasi, sangat disarankan untuk membuat cadangan proyek Anda.

Proyek yang ada

  • Android Studio> Menu Refactor> Migrasikan ke AndroidX ...
  • Ini akan menganalisis dan akan membuka jendela Refraktor di bagian bawah. Terima perubahan yang harus dilakukan.

gambar

Proyek baru

Letakkan bendera ini di bendera Anda gradle.properties

android.enableJetifier=true
android.useAndroidX=true

Periksa pemetaan @ Library untuk paket AndroidX yang sama .

Periksa @ halaman resmi Migrasi ke AndroidX

Apa itu Jetifier?

Bug saat bermigrasi

  • Jika Anda membangun aplikasi, dan menemukan beberapa kesalahan setelah migrasi, maka Anda harus memperbaiki kesalahan kecil tersebut. Anda tidak akan terjebak di sana, karena itu dapat dengan mudah diperbaiki.
  • Pustaka pihak ke-3 tidak dikonversi ke AndroidX dalam direktori, tetapi mereka dapat dikonversi pada saat dijalankan oleh Jetifier , jadi jangan khawatir tentang kompilasi kesalahan waktu, aplikasi Anda akan berjalan dengan sempurna.

Dukungan 28.0.0 adalah rilis terakhir?

Dari Dukungan Android Revisi 28.0.0

Ini akan menjadi rilis fitur terakhir di bawah kemasan android.support , dan pengembang didorong untuk bermigrasi ke AndroidX 1.0.0

Jadi gunakan AndroidX, karena Android hanya akan memperbarui paket androidx dari sekarang.

Bacaan lebih lanjut

https://developer.android.com/topic/libraries/support-library/androidx-overview

https://android-developers.googleblog.com/2018/05/hello-world-androidx.html


2
@androidmalin Senang mendengar dari Anda - informasi ini membantu Anda :)
Khemraj

Dalam keadaan apa Anda dapat / haruskah Anda atur enableJetifier menjadi false?
Tandai

1
@Ark enableJetifier=falseadalah nilai default. Itu salah ketika Anda tidak mengaturnya. Itu berarti tidak ada perpustakaan Anda yang akan ditulis ulang ke AndroidX.
Khemraj

4
Migrasi studio android tidak berfungsi dengan baik. saya harus memperbaiki ratusan file secara manual ... saya menghabiskan lebih banyak waktu untuk memperbaiki kode karena perubahan alat Google daripada benar-benar memprogram kode yang penting ... sigh
LearningPath

1
Sekarang (3.3) dipanggilMigrate to AndroidX
Dale

32

Berdasarkan pada dokumentasi :

androidx adalah struktur paket baru untuk membuatnya lebih jelas paket mana yang dibundel dengan sistem operasi Android, dan yang dipaket dengan APK aplikasi Anda. Ke depan, hirarki paket android. * Akan dicadangkan untuk paket Android yang dikirimkan dengan sistem operasi; paket lain akan dikeluarkan dalam hirarki paket androidx. * baru.

Struktur paket yang dirancang ulang adalah untuk mendorong perpustakaan yang lebih kecil dan lebih fokus. Anda menemukan detail mengenai pemetaan artefak di sini .

Ada pustaka dukungan (berisi komponen dan paket untuk kompatibilitas ke belakang) bernama "v7" ketika level SDK minimal yang didukung adalah 14, penamaan baru menjelaskan untuk memahami pembagian antara API yang dibundel dengan platform dan pustaka untuk pengembang aplikasi yang digunakan pada berbagai versi Android. Anda dapat merujuk pada pengumuman resmi untuk lebih jelasnya.


22

AndroidX adalah proyek sumber terbuka yang digunakan tim Android untuk mengembangkan, menguji, mengemas, versi, dan merilis perpustakaan di dalam Jetpack .

AndroidX adalah peningkatan besar ke Perpustakaan Dukungan Android asli . Seperti Perpustakaan Dukungan, AndroidX dikirimkan secara terpisah dari OS Android dan menyediakan kompatibilitas mundur di seluruh rilis Android. AndroidX sepenuhnya menggantikan Perpustakaan Dukungan dengan menyediakan paritas fitur dan perpustakaan baru.

AndroidX mencakup beberapa fitur berikut:

  • Semua paket di AndroidX hidup dalam namespace yang konsisten dimulai dengan string androidx. Paket Perpustakaan Dukungan telah dipetakan ke dalam paket androidx. * Yang sesuai. Untuk pemetaan penuh dari semua kelas lama dan buat artefak ke yang baru, lihat halaman Refactoring Paket.

  • Berbeda dengan Perpustakaan Dukungan, paket AndroidX dipelihara dan diperbarui secara terpisah. Paket androidx menggunakan ketat Semantic Versioningmulai dengan versi 1.0.0. Anda dapat memperbarui perpustakaan AndroidX di proyek Anda secara mandiri.

  • Semua pengembangan Perpustakaan Dukungan baru akan terjadi di perpustakaan AndroidX. Ini termasuk pemeliharaan artefak Perpustakaan Dukungan asli dan pengenalan komponen Jetpack baru.

Menggunakan AndroidX

Lihat Memigrasi ke AndroidX untuk mempelajari cara memigrasi proyek yang ada.

Jika Anda ingin menggunakan AndroidX dalam proyek baru, Anda perlu mengatur kompilasi SDK ke Android 9.0 (API level 28) atau lebih tinggi dan mengatur kedua flag plugin Android Gradle berikut menjadi true di gradle.properties file .

  • android.useAndroidX: Ketika disetel ke true, plugin Android menggunakan pustaka AndroidX yang sesuai dan bukan Pustaka Dukungan. Bendera salah secara default jika tidak ditentukan.

  • android.enableJetifier: Ketika disetel ke true, plugin Android secara otomatis memigrasi perpustakaan pihak ketiga yang ada untuk menggunakan AndroidX dengan menulis ulang binari mereka. Bendera salah secara default jika tidak ditentukan.

Untuk pemetaan Artifact, lihat ini


14

Artikel ini Android Jetpack: Apa arti pengumuman terbaru untuk Perpustakaan Dukungan Android? menjelaskannya dengan baik

Saat ini, banyak yang menganggap Perpustakaan Dukungan sebagai bagian penting dari pengembangan aplikasi Android, sampai ke titik di mana ia digunakan oleh 99 persen aplikasi di Google Play store. Namun, ketika Perpustakaan Dukungan telah tumbuh, inkonsistensi telah merangkak di sekitar konvensi penamaan perpustakaan.

Awalnya, nama setiap paket menunjukkan tingkat API minimum yang didukung oleh paket itu, misalnya, dukungan-v4. Namun, versi 26.0.0Perpustakaan Dukungan meningkatkan API minimum menjadi 14, jadi hari ini banyak nama paket tidak ada hubungannya dengan level API minimum yang didukung. Saat dukungan-v4 dan support-v7 keduanya memiliki API minimum 14, mudah untuk melihat mengapa orang menjadi bingung!

Untuk menjernihkan kebingungan ini, Google saat ini sedang refactoring Perpustakaan Dukungan menjadi perpustakaan ekstensi Android baru struktur paket (AndroidX) yang baru. AndroidX akan menampilkan nama paket yang disederhanakan, serta Maven groupIds dan artifactIds yang mencerminkan konten setiap paket dengan lebih baik dan level API yang didukungnya.

Dengan konvensi penamaan saat ini, juga tidak jelas paket mana yang dibundel dengan sistem operasi Android, dan mana yang dipaket dengan APK aplikasi Anda (Kit Paket Android) . Untuk menjernihkan kebingungan ini, semua pustaka yang tidak terikat akan dipindahkan ke AndroidX. * Namespace, sedangkan hirarki paket android. * Akan dicadangkan untuk paket yang dikirimkan dengan sistem operasi Android .


12

Hanya beberapa bit tambahan dari sisi saya untuk semua jawaban yang tersedia

Membutuhkan AndroidX

  1. Seperti yang dikatakan dalam jawaban luar biasa oleh @KhemRaj,

Dengan konvensi penamaan saat ini, tidak jelas paket mana yang dibundel dengan sistem operasi Android , dan mana yang dipaket dengan APK aplikasi Anda ( Android Package Kit ). Untuk menjernihkan kebingungan ini, semua pustaka yang tidak dibundel akan dipindahkan ke AndroidX . * Namespace, sedangkan hirarki paket Android. * Akan disediakan untuk paket yang dikirimkan dengan sistem operasi Android.

  1. Selain ini,

    Awalnya, nama setiap paket menunjukkan tingkat API minimum yang didukung oleh paket itu, misalnya dukungan-v4 . Namun, versi 26.0.0 dari Perpustakaan Dukungan meningkatkan API minimum menjadi 14 , jadi hari ini banyak nama paket tidak ada hubungannya dengan level API minimum yang didukung. Ketika paket support-v4 dan support-v7 keduanya memiliki API minimum 14, mudah untuk melihat mengapa orang menjadi bingung !. Jadi sekarang dengan AndroidX, tidak ada ketergantungan pada level API.

Perubahan penting lainnya adalah artefak AndroidX akan memperbarui secara mandiri, sehingga Anda dapat memperbarui pustaka AndroidX individual di proyek Anda, daripada harus mengubah setiap ketergantungan sekaligus. Pesan-pesan " Semua perpustakaan com.android.support harus menggunakan spesifikasi versi yang persis sama " harus menjadi sesuatu di masa lalu!


7

Saya mengetahui tentang AndroidX dari video Android Dev Summit ini . Peringkasannya adalah -

  1. Tidak ada lagi perpustakaan pendukung: android tidak akan pernah dikelola oleh Google di bawah ruang perpustakaan dukungan. Jadi, jika Anda ingin menemukan perbaikan bug di perpustakaan dukungan Anda harus memigrasi proyek Anda di AndroidX
  2. Manajemen paket yang lebih baik: Untuk versi standar dan independen. Karena versi sebelumnya perpustakaan dukungan terlalu membingungkan. Ini akan melepaskan Anda rasa sakit dari "Semua perpustakaan com.android.support harus menggunakan spesifikasi versi yang sama persis" pesan.
  3. Perpustakaan Dewa lainnya telah bermigrasi ke AndroidX : Layanan Google Play, Firebase, Mockito 2, dll dimigrasikan ke AndroidX.
  4. Perpustakaan baru akan diterbitkan menggunakan artefak AndroidX: Semua perpustakaan akan berada di namespace AndroidX seperti Android Jetpack

4

Ini sama dengan versi dukungan AppCompat tetapi memiliki lebih sedikit kekacauan versi v4 dan v7 sehingga sangat membantu dari Menggunakan komponen berbeda dari elemen XML Android.



3

AndroidX adalah proyek sumber terbuka yang digunakan tim Android untuk mengembangkan, menguji, mengemas, versi, dan merilis perpustakaan di dalam Jetpack.

Setelah berjam-jam berjuang, saya menyelesaikannya dengan memasukkan yang berikut ke dalam app / build.gradle:

android {
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

Letakkan bendera ini di properti gradle.prop Anda

android.enableJetifier=true
android.useAndroidX=true

Changes in gradle:

implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'com.google.android.material:material:1.1.0-alpha04'

Saat bermigrasi di Android studio, file app / gradle secara otomatis diperbarui dengan implementasi perpustakaan koreksi dari perpustakaan standar

Lihat: https://developer.android.com/jetpack/androidx/migrate


0

Android menyediakan beberapa set perpustakaan yang berbeda. Satu disebut Perpustakaan dukungan Android, dan yang lainnya disebut AndroidX. Memilih "Gunakan android. * Artefak" menunjukkan bahwa kami ingin menggunakan AndroidX.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.