Ich lese über eine Raumbibliothek von Android. Ich sehe sie geändert Paket android
zu androidx
. Ich habe das nicht verstanden. Kann mir bitte jemand erklären?
implementation "androidx.room:room-runtime:$room_version"
annotationProcessor "androidx.room:room-compiler:$room_version"
Auch dies ist mit dem android
Paket auch verfügbar .
implementation "android.arch.persistence.room:runtime:$room_version"
annotationProcessor "android.arch.persistence.room:compiler:$room_version"
- Was war nötig, um neue Support-Bibliotheken einzupacken,
androidx
anstattandroid
? - Anwendungsfall- und Einflussfaktoren in bestehenden Projekten.
androidx.*
ist die Pakethierarchie für Unterstützungsbibliotheken. Sie werden alle unter dem gleichen Paket wie in der Ära vonandroidx
(wie Architekturkomponenten, andere Unterstützungsbibliotheken) geliefert .androidx
von CORE auf Paket umgestellt habenandroid
.Antworten:
AndroidX - Android-Erweiterungsbibliothek
Aus der AndroidX-Dokumentation
Benötigen Sie AndroidX
AndroidX ist eine neu gestaltete Bibliothek, um Paketnamen klarer zu machen. Von nun an wird die Android- Hierarchie nur noch für Android-Standardklassen gelten, die mit dem Android-Betriebssystem geliefert werden, und andere Bibliotheken / Abhängigkeiten werden Teil von AndroidX sein (sinnvoller). Von nun an wird die gesamte Neuentwicklung in Androidx aktualisiert.
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
Komplette Artefaktzuordnungen für AndroidX-Pakete
AndroidX verwendet die Semantic-Version
Zuvor wurde
support library
die SDK-Version verwendet, AndroidX jedoch dieSemantic-version
. Es wird von 28.0.0 → 1.0.0 neu versioniert.So migrieren Sie das aktuelle Projekt
In Android Studio 3.2 (September 2018) gibt es eine direkte Option zum Migrieren eines vorhandenen Projekts nach
AndroidX
. Dadurch werden alle Pakete automatisch überarbeitet.Vor der Migration wird dringend empfohlen, Ihr Projekt zu sichern.
Setzen Sie diese Flaggen in Ihre
gradle.properties
Überprüfen Sie die @ Library-Zuordnungen auf das gleiche AndroidX-Paket .
Überprüfen Sie @ Offizielle Seite von Migrate to AndroidX
Was ist Jetifier?
Fehler bei der Migration
Support 28.0.0 ist letzte Version?
Ab Android Support Revision 28.0.0
Gehen Sie also mit AndroidX, da Android ab sofort nur noch das Androidx-Paket aktualisiert.
Weiterführende Literatur
https://developer.android.com/topic/libraries/support-library/androidx-overview
https://android-developers.googleblog.com/2018/05/hello-world-androidx.html
quelle
enableJetifier=false
ist der Standardwert. Es ist falsch, wenn Sie es nicht einstellen. Das bedeutet, dass keine Ihrer Bibliotheken in AndroidX neu geschrieben wird.Migrate to AndroidX
Basierend auf der Dokumentation :
Die neu gestaltete Paketstruktur soll kleinere und fokussiertere Bibliotheken fördern. Details zu den Artefaktzuordnungen finden Sie hier .
Es gibt Unterstützungsbibliotheken (mit Komponenten und Paketen aus Gründen der Abwärtskompatibilität) mit dem Namen "v7", wenn die unterstützte Mindest-SDK-Stufe 14 beträgt. Die neue Benennung macht deutlich, dass die Trennung zwischen APIs, die mit der Plattform gebündelt sind, und den Bibliotheken für verwendete App-Entwickler klar ist auf verschiedenen Versionen von Android. Weitere Informationen finden Sie in der offiziellen Ankündigung .
quelle
AndroidX ist das Open-Source-Projekt, mit dem das Android-Team Bibliotheken in Jetpack entwickelt, testet , verpackt, versioniert und veröffentlicht .
AndroidX ist eine wesentliche Verbesserung gegenüber der ursprünglichen Android Support Library . Wie die Support-Bibliothek wird AndroidX separat vom Android-Betriebssystem ausgeliefert und bietet Abwärtskompatibilität für alle Android-Versionen. AndroidX ersetzt die Support-Bibliothek vollständig, indem es Feature-Parität und neue Bibliotheken bereitstellt.
Alle Pakete in AndroidX leben in einem konsistenten Namespace, beginnend mit der Zeichenfolge androidx. Die Support Library-Pakete wurden den entsprechenden androidx. * -Paketen zugeordnet. Eine vollständige Zuordnung aller alten Klassen und Build-Artefakte zu den neuen finden Sie auf der Seite Paket-Refactoring.
Im Gegensatz zur Support-Bibliothek werden AndroidX-Pakete separat verwaltet und aktualisiert. Die AndroidX-Pakete verwenden strikt
Semantic Versioning
ab Version 1.0.0. Sie können AndroidX-Bibliotheken in Ihrem Projekt unabhängig aktualisieren.Die gesamte Entwicklung der neuen Support-Bibliothek erfolgt in der AndroidX-Bibliothek. Dies umfasst die Wartung der ursprünglichen Artefakte der Support Library und die Einführung neuer Jetpack-Komponenten.
Verwenden von AndroidX
Unter Migrieren auf AndroidX erfahren Sie, wie Sie ein vorhandenes Projekt migrieren.
Wenn Sie AndroidX in einem neuen Projekt verwenden möchten, müssen Sie das Kompilierungs-SDK auf Android 9.0 (API-Stufe 28) oder höher setzen und beide der folgenden Android Gradle-Plugin-Flags in Ihrer
gradle.properties
Datei auf true setzen .android.useAndroidX
: Wenn true festgelegt ist, verwendet das Android-Plugin anstelle einer Support-Bibliothek die entsprechende AndroidX-Bibliothek. Das Flag ist standardmäßig falsch, wenn es nicht angegeben ist.android.enableJetifier
: Wenn true festgelegt ist, migriert das Android-Plugin vorhandene Bibliotheken von Drittanbietern automatisch zur Verwendung von AndroidX, indem die Binärdateien neu geschrieben werden. Das Flag ist standardmäßig falsch, wenn es nicht angegeben ist.Für Artifact Zuordnungen sehen diese
quelle
Dieser Artikel Android Jetpack: Was bedeuten die jüngsten Ankündigungen für die Android Support Library? erklärt es gut
quelle
Nur ein paar Kleinigkeiten von meiner Seite zu allen verfügbaren Antworten
Benötigen Sie AndroidX
Mit der aktuellen Namenskonvention ist nicht klar, welche Pakete mit dem Android-Betriebssystem gebündelt sind und welche mit dem APK ( Android Package Kit ) Ihrer Anwendung gepackt sind . Um diese Verwirrung zu beseitigen , werden alle entbündelten Bibliotheken in den AndroidX * -Namensraum von AndroidX verschoben, während die Pakethierarchie für Android * für Pakete reserviert wird, die mit dem Android-Betriebssystem geliefert werden.
Anderes als das,
Anfänglich gab der Name jedes Pakets die von diesem Paket unterstützte Mindest-API-Ebene an, z. B. support-v4 . In Version 26.0.0 der Support Library wurde die Mindest-API jedoch auf 14 erhöht , sodass viele der Paketnamen heute nichts mehr mit der Mindest-API-Stufe zu tun haben. Wenn die Pakete support-v4 und support-v7 beide eine Mindest-API von 14 haben, ist leicht zu erkennen, warum die Leute verwirrt sind!. Mit AndroidX besteht also keine Abhängigkeit von der API-Ebene.
Eine weitere wichtige Änderung besteht darin, dass die AndroidX-Artefakte unabhängig voneinander aktualisiert werden, sodass Sie einzelne AndroidX-Bibliotheken in Ihrem Projekt aktualisieren können, anstatt jede Abhängigkeit gleichzeitig ändern zu müssen. Diese frustrierenden Meldungen „ Alle com.android.support-Bibliotheken müssen genau dieselbe Versionsspezifikation verwenden “ sollten der Vergangenheit angehören !
quelle
Ich habe AndroidX aus diesem Android Dev Summit-Video kennengelernt . Die Zusammenfassung ist -
quelle
Es ist dasselbe wie die AppCompat-Versionen der Unterstützung, hat jedoch weniger Probleme mit den Versionen 4 und 7, sodass die Verwendung der verschiedenen Komponenten von Android-XML-Elementen sehr hilfreich ist.
quelle
androidx
wirdsupport library
nach ersetzen28.0.0
. Sie sollten Ihr Projekt migrieren, um es zu verwenden.androidx
verwendetSemantic Versioning
. Die VerwendungAndroidX
wird nicht durch die Version verwechselt, die im Bibliotheksnamen und im Paketnamen angegeben ist. Das Leben wird einfacher[AndroidX und Support-Kompatibilität]
quelle
AndroidX ist das Open-Source-Projekt, mit dem das Android-Team Bibliotheken in Jetpack entwickelt, testet, verpackt, versioniert und veröffentlicht.
Nach stundenlangem Kämpfen habe ich es gelöst, indem ich Folgendes in app / build.gradle aufgenommen habe:
Setzen Sie diese Flags in Ihre gradle.properties
Bei der Migration unter Android Studio wird die App / Gradle-Datei automatisch mit den Implementierungen der Korrekturbibliothek aus der Standardbibliothek aktualisiert
Siehe: https://developer.android.com/jetpack/androidx/migrate
quelle
Android bietet verschiedene Bibliothekssätze. Eine heißt Android Support Library und die andere heißt AndroidX. Wenn Sie "Android. * Artefakte verwenden" auswählen, wird angezeigt, dass AndroidX verwendet werden soll.
quelle