AndroidX nedir?


256

Android'in bir oda kütüphanesi hakkında okuyorum. Onların paketi değişti bakınız androidiçin androidx. Bunu anlamadım. Birisi açıklayabilir mi lütfen?

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

Hatta bu androidpakette de mevcuttur.

implementation "android.arch.persistence.room:runtime:$room_version"
annotationProcessor "android.arch.persistence.room:compiler:$room_version"
  • Bunun androidxyerine yeni destek kitaplıklarının paketlenmesi ihtiyacı neydi android?
  • Mevcut projelerde vaka ve etki faktörlerini kullanın.

4
Developer.android.com/topic/libraries/support-library/… adresini okuyun . androidx.*destek kitaplıkları için paket hiyerarşisidir. Hepsi çağa geldiğimizde aynı pakete sahip olacaklar androidx(Mimari bileşenler, diğer destek kütüphaneleri gibi).
ADM

3
Tam olarak ne anlamadın? Paketi neden değiştirdiler?
Rohit5k2

@ADM neden CORE'dan androidxpakete geçtiler android?
Khemraj

2
Paket yapısını basitlik adına yeniden tasarladılar. Bu, bir göz atmak istiyorsanız IO 2018'de de açıklandı. Thx
ADM

Yanıtlar:


335

AndroidX - Android Uzantı Kütüphanesi

Gönderen AndroidX belgelerinde

Hangi paketlerin Android işletim sistemiyle ve hangilerinin uygulamanızın APK'sı ile paketlendiğini daha net hale getirmek için yeni bir paket yapısı sunuyoruz. Bundan sonra, android. * Paket hiyerarşisi, işletim sistemiyle birlikte gelen Android paketleri için ayrılacaktır. Diğer paketler, AndroidX kütüphanesinin bir parçası olarak yeni androidx. * Paket hiyerarşisinde yayınlanacaktır.

AndroidX İhtiyacı

AndroidX, paket adlarını daha net hale getirmek için yeniden tasarlanmış bir kütüphanedir. Bundan böyle android hiyerarşisi sadece android işletim sistemi ile gelen android varsayılan sınıflar için olacak ve diğer kütüphane / bağımlılıklar androidx'in bir parçası olacak (daha mantıklı). Bundan böyle androidx'te tüm yeni gelişmeler güncellenecek.

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: malzeme

AndroidX paketleri için eksiksiz artefakt eşlemeleri

AndroidX Semantic sürümünü kullanıyor

Daha önce, support librarySDK sürümünü kullanıyordu ancak AndroidX Semantic-version. 28.0.0 → 1.0.0'dan yeniden versiyona geçecek.

Mevcut proje nasıl taşınır?

Android Studio 3.2'de (Eylül 2018), mevcut projeyi taşımak için doğrudan bir seçenek vardır AndroidX. Bu refactor otomatik olarak tüm paketleri.

Taşınmadan önce, projenizi yedeklemeniz önemle tavsiye edilir.

Mevcut proje

  • Android Studio> Refactor Menüsü> AndroidX'e Taşı ...
  • Altında Refraktör penceresini analiz eder ve açar. Yapılacak değişiklikleri kabul edin.

görüntü

Yeni proje

Bu bayrakları gradle.properties

android.enableJetifier=true
android.useAndroidX=true

Eşit AndroidX paketi için @ Kütüphane eşlemelerini kontrol edin .

AndroidX'e Migrate'ın resmi sayfasını kontrol edin

Jetifier nedir?

Göçmenlik hataları

  • Uygulama oluşturursanız ve taşıdıktan sonra bazı hatalar bulursanız, bu küçük hataları düzeltmeniz gerekir. Orada sıkışıp kalmayacaksınız, çünkü bu kolayca düzeltilebilir.
  • 3. taraf kütüphaneler dizinde AndroidX'e dönüştürülmez, ancak Jetifier tarafından çalışma zamanında dönüştürülürler , bu nedenle derleme zamanı hataları hakkında endişelenmeyin, uygulamanız mükemmel çalışır.

Destek 28.0.0 son sürüm mü?

Gönderen Android Destek Revizyon 28.0.0

Bu android.support ambalajının altındaki son özellik sürümü olacak ve geliştiricilerin AndroidX 1.0.0'a geçmeleri teşvik ediliyor

AndroidX ile devam edin, çünkü Android artık sadece androidx paketini güncelleyecek.

Daha fazla okuma

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

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


2
@androidmalin Sizden duyduğuma sevindim - bu bilgiler size yardımcı oldu :)
Khemraj

Hangi koşullarda enableJetifier öğesini false olarak ayarlayabilir / ayarlamanız gerekir?
Mark

1
@ Mark enableJetifier=falsevarsayılan değerdir. Ayarlamadığınız zaman yanlıştır. Bu, kitaplıklarınızın hiçbirinin AndroidX'e yeniden yazılmayacağı anlamına gelir.
Khemraj

4
Android stüdyosunun taşınması kötü çalışıyor. el ile yüzlerce dosyayı düzeltmek zorunda kaldı ... Ben aslında önemli olan kodu programlamak daha Google araç değişiklikleri nedeniyle kodu düzeltmek için daha fazla zaman harcamak ... sigh
LearningPath

1
Şimdi (3.3) denilenMigrate to AndroidX
Dale

32

Belgelere dayanarak :

androidx, hangi paketlerin Android işletim sistemiyle ve hangilerinin uygulamanızın APK'sı ile paketlendiğini daha net hale getirmek için yeni bir paket yapısıdır. Bundan sonra, android. * Paket hiyerarşisi, işletim sistemiyle birlikte gelen Android paketleri için ayrılacaktır; diğer paketler yeni androidx. * paket hiyerarşisinde yayınlanacaktır.

Yeniden tasarlanan paket yapısı daha küçük ve daha odaklı kütüphaneleri teşvik etmektir. Eser eşlemeleri ile ilgili ayrıntıları burada bulabilirsiniz .

Desteklenen minimum SDK düzeyi 14 olduğunda "v7" adlı destek kitaplıkları (geriye dönük uyumluluk için bileşen ve paketler içerir) vardır, yeni adlandırma, platformla birlikte gelen API'ler ile kullanılan uygulama geliştiricilerinin kitaplıkları arasındaki ayrımın anlaşılmasını kolaylaştırır Android'in farklı sürümlerinde. Daha fazla bilgi için resmi duyuruya başvurabilirsiniz .


22

AndroidX , Android ekibinin Jetpack içindeki kütüphaneleri geliştirmek, test etmek, paketlemek, versiyonlamak ve yayınlamak için kullandığı açık kaynaklı bir projedir .

AndroidX , orijinal Android Destek Kütüphanesi için önemli bir gelişmedir . Destek Kitaplığı gibi AndroidX de Android işletim sisteminden ayrı olarak gönderilir ve Android sürümleri arasında geriye dönük uyumluluk sağlar. AndroidX, özellik paritesi ve yeni kütüphaneler sağlayarak Destek Kitaplığı'nın yerini tamamen almaktadır.

AndroidX aşağıdaki özellikleri içerir:

  • AndroidX'teki tüm paketler androidx dizesiyle başlayan tutarlı bir ad alanında yaşar. Destek Kütüphanesi paketleri ilgili androidx. * Paketlerine eşlenmiştir. Tüm eski sınıfların tam olarak eşlenmesi ve yeni sınıflarla ilgili yapay nesneler oluşturmak için Paket Yeniden Düzenleme sayfasına bakın.

  • Destek Kitaplığından farklı olarak, AndroidX paketleri ayrı olarak korunur ve güncellenir. Androidx paketleri Semantic Versioning1.0.0 sürümü ile katı bir başlangıç kullanır . Projenizdeki AndroidX kitaplıklarını bağımsız olarak güncelleyebilirsiniz.

  • Tüm yeni Destek Kütüphanesi geliştirmeleri AndroidX kütüphanesinde gerçekleşecek. Bu, orijinal Destek Kütüphanesi eserlerinin bakımını ve yeni Jetpack bileşenlerinin tanıtımını içerir.

AndroidX kullanma

Bkz AndroidX göç Mevcut bir projeyi geçirmek öğrenmek için.

AndroidX'i yeni bir projede kullanmak istiyorsanız, derleme SDK'sını Android 9.0 (API seviye 28) veya daha yüksek bir değere ayarlamanız ve aşağıdaki Android Gradle eklenti bayraklarının her ikisini de gradle.propertiesdosyanızda true olarak ayarlamanız gerekir .

  • android.useAndroidX: True olarak ayarlandığında, Android eklentisi Destek Kitaplığı yerine uygun AndroidX kitaplığını kullanır. Belirtilmemişse, bayrak varsayılan olarak yanlıştır.

  • android.enableJetifier: True olarak ayarlandığında, Android eklentisi mevcut üçüncü taraf kitaplıklarını ikili dosyalarını yeniden yazarak AndroidX'i kullanmak üzere otomatik olarak geçirir. Belirtilmemişse, bayrak varsayılan olarak yanlıştır.

İçin Yapay eşleştirmeleri bkz bu


14

Bu makale Android Jetpack: Son duyurular Android Destek Kütüphanesi için ne anlama geliyor? iyi açıklıyor

Bugün pek çok kişi, Google Play Store'daki uygulamaların yüzde 99'u tarafından kullanıldığı noktaya kadar Destek Kitaplığı'nı Android uygulama geliştirmesinin önemli bir parçası olarak görüyor. Ancak, Destek Kütüphanesi büyüdükçe, kütüphanenin adlandırma kuralını çevreleyen tutarsızlıklar ortaya çıktı.

Başlangıçta, her paketin adı, söz konusu paket tarafından desteklenen minimum API düzeyini, örneğin destek-v4'ü gösterdi. Ancak, 26.0.0Destek Kitaplığı'nın sürümü minimum API'yi 14'e yükseltti, bu nedenle bugün paket adlarının çoğunun desteklenen minimum API düzeyi ile ilgisi yok. Ne zaman destek-v4 ve destek-v7 paketleri hem 14 minimum API var, insanların karıştı neden görmek kolaydır!

Bu karışıklığı gidermek için Google şu anda Destek Kitaplığı'nı yeni bir Android uzantı kitaplığına yeniden düzenliyor (AndroidX) paket yapısına dönüştürüyor. AndroidX, her paketin içeriğini ve desteklenen API düzeylerini daha iyi yansıtan Maven groupIds ve artifactIds gibi basitleştirilmiş paket adlarına sahip olacak.

Mevcut adlandırma kuralında, Android işletim sistemiyle hangi paketlerin paketlendiği ve uygulamanızın APK'sı (Android Paket Kiti) ile paketlendiği de net değildir . Bu karışıklığı gidermek için, tüm ayrıştırılmamış kütüphaneler AndroidX'in androidx. * Ad alanına taşınırken, android. * Paket hiyerarşisi Android işletim sistemiyle birlikte gelen paketler için ayrılacaktır .


12

Yanımda mevcut tüm cevaplara sadece birkaç bit eklenmesi

AndroidX İhtiyacı

  1. @KhemRaj'ın şaşırtıcı cevabında söylendiği gibi,

Mevcut adlandırma kuralında, Android işletim sistemiyle hangi paketlerin paketlendiği ve uygulamanızın APK'sı ( Android Paket Kiti ) ile paketlendiği açık değildir . Bu karışıklığı ortadan kaldırmak için, tüm ayrıştırılmamış kütüphaneler AndroidX'in androidx. * Ad alanına taşınırken, android. * Paket hiyerarşisi Android işletim sistemiyle birlikte gelen paketler için ayrılacaktır.

  1. Bundan başka,

    Başlangıçta, her paketin adı, söz konusu paket tarafından desteklenen minimum API düzeyini, örneğin support-v4'ü gösterdi . Bununla birlikte, Destek Kitaplığı'nın 26.0.0 sürümü minimum API'yi 14'e yükseltti , bu nedenle bugün paket adlarının çoğunun desteklenen minimum API düzeyi ile ilgisi yok. Support-v4 ve support-v7 paketlerinin her ikisinde de minimum 14 API varsa, insanların neden kafası karıştığını görmek kolaydır !. Şimdi AndroidX ile API seviyesine bağımlılık yok.

Bir diğer önemli değişiklik, AndroidX eserlerinin bağımsız olarak güncellenecek olması sayesinde, her bağımlılığı bir kerede değiştirmek yerine projenizdeki bireysel AndroidX kitaplıklarını güncelleyebileceksiniz. Bu sinir bozucu “ Tüm com.android.support kitaplıkları aynı sürüm belirtimini kullanmalıdır ” mesajları geçmişte kaldı!


7

Bu Android Dev Zirvesi videosundan AndroidX hakkında bilgi sahibi oldum . Özetleme -

  1. Artık destek kitaplığı yok: Android destek kitaplığı, destek kitaplığı ad alanı altında Google tarafından asla korunmaz. Bu nedenle, destek kitaplığındaki bir hatanın düzeltmelerini bulmak istiyorsanız, projenizi AndroidX'te taşımanız gerekir
  2. Daha iyi paket yönetimi: Standart ve bağımsız sürüm oluşturma için Önceki destek kitaplığı sürümlendirmesi çok kafa karıştırıcıydı. “Tüm com.android.support kitaplıkları aynı sürüm belirtimini kullanmalıdır” iletisinin acısını salıverecektir .
  3. Diğer Tanrı kütüphaneleri AndroidX'e , Google oyun hizmetleri, Firebase, Mockito 2 vb. AndroidX'e taşındı.
  4. AndroidX eseri kullanılarak yeni kütüphaneler yayınlanacak: Tüm kütüphaneler AndroidX ad alanında Android Jetpack gibi olacak

4

AppCompat destek sürümleriyle aynıdır, ancak v4 ve v7 sürümlerinin daha az dağınıklığına sahiptir, bu yüzden android XML öğelerinin farklı bileşenlerini kullanma konusunda çok yardımcıdır.



3

AndroidX, Android ekibinin Jetpack içindeki kütüphaneleri geliştirmek, test etmek, paketlemek, versiyonlamak ve yayınlamak için kullandığı açık kaynaklı bir projedir.

Saatlerce uğraştıktan sonra, app / build.gradle içine aşağıdakileri ekleyerek çözdüm:

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

Bu bayrakları grubunuza koyun.

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'

Android stüdyosuna taşınırken, uygulama / not dosyası standart kitaplıktaki düzeltme kitaplığı uygulamaları ile otomatik olarak güncellenir

Bakınız: https://developer.android.com/jetpack/androidx/migrate


0

Android birkaç farklı kütüphane seti sunar. Birine Android destek Kütüphanesi, diğerine AndroidX denir. "Android kullan. * Eserler" seçildiğinde AndroidX kullanmak istediğimizi gösterir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.