Antworten:
Das diesjährige Google I / O (18) hat Google Jetpack angekündigt, das eine Sammlung von Bibliotheken enthält, um Entwicklern das Leben zu erleichtern.
Jetpack enthält zuvor eingeführte Android-Architekturkomponenten (ViewModel, Room, Paging, LiveData usw.) sowie neu eingeführte Architekturkomponenten wie WorkManager, Navigation. Abgesehen davon hat Jetpack auch andere Bibliotheken wie AndroidX, AndroidKTX usw.
AndroidX ist eine neue Paketstruktur für Android-Supportbibliotheken wie Support, Datenbindung, Design usw.
zB jetzt auf Stationen verwenden Entwickler androidx.databinding. anstelle von android.databinding. beim Importieren von Bibliotheken in unsere Projekte
Dadurch kann Google SemVer oder Semantic Versioning in seine Bibliothekspakete aufnehmen. Für Entwickler bedeutet dies, dass wir nicht für alle Support-Bibliotheken dieselbe Support-Bibliotheksversion verwenden müssen. Jede Unterstützung oder besser gesagt AndroidX-Bibliothek behält ihre eigene Versionierung bei.
Ein weiterer Vorteil für Entwickler ist, dass wir nicht für alle Support-Bibliotheken in unserem Projekt dieselbe Version beibehalten müssen.
Über Jetifier werden alle Support-Pakete von Abhängigkeiten zur Erstellungszeit konvertiert. Gemäß offizieller Dokumentation von Jetifier
Das Jetifier-Tool migriert unterstützungsbibliotheksabhängige Bibliotheken, um sich stattdessen auf die entsprechenden AndroidX-Pakete zu verlassen. Mit dem Tool können Sie eine einzelne Bibliothek direkt migrieren, anstatt das mit Android Studio gelieferte Android Gradle-Plugin zu verwenden.
Um AndroidX in einem Projekt zu verwenden, müssen wir targetSdkVersion für unser Projekt auf 28 setzen und die folgenden 2 Zeilen in die Datei gradle.properties einfügen .
android.useAndroidX=true
android.enableJetifier=true
Ich hoffe, dies wird Ihre Frage beantworten.
BEARBEITEN
Dieser Link enthält eine Zuordnung aller Support-Bibliothekskomponenten zu ihrem AndroidX-Gegenstück.
Weitere Informationen zu AndroidX finden Sie in diesem Blog
Vorausgesetzt, Sie kennen sich aus AndroidX
. Wenn nicht, lesen Sie bitte @ diesen Beitrag .
Jetifier
Konvertiertsupport libraries
alle Ihre AbhängigkeitenAndroidX
automatisch in. Wenn Sie dies nicht festlegen, verfügttrue
Ihr Projekt sowohl über die Unterstützung ( nach der Version 28.0.0 veraltet ) als auch über das redundante AndroidX- Paket.
Wenn Sie PhotoView.java
in Ihrer Abhängigkeit haben. Das nutzt die Support-Bibliothek AppCompatImageView
.
import android.support.v7.widget.AppCompatImageView;
Diese Klasse wird jetzt in das androidx
Paket verschoben. Wie wird PhotoView
Androidx erhalten AppCompatImageView
? Und die App läuft immer noch auf dem Gerät.
Wer hat diesen Lauf gemacht?
Jetifier , der alle Unterstützungspakete der Abhängigkeit zur Erstellungszeit konvertiert.
Jetifier konvertiert android.support.v7.widget.AppCompatImageView
zu , androidx.appcompat.widget.AppCompatImageView
während das Projekt zu bauen.
Das Aktivieren von Jetifier ist wichtig, wenn Sie von Support Libraries auf AndroidX migrieren .
In diesem Beitrag erfahren Sie mehr über AndroidX.
Ihr Code zeigt möglicherweise Fehler bei der Kompilierung an, nachdem Sie Jetifier aktiviert haben, während Sie Abhängigkeitsklassen verwenden. die Sie durch das Löschen entfernen .idea
, .gradle
und Neu-Sync - Projekt.
Jetifier hilft bei der Migration eines Android-Projekts auf AndroidX .
Jetifier hilft dabei, die Bibliothek eines Drittanbieters mit Ihrem AndroidX-Projekt kompatibel zu machen.
Wenn Sie in Ihrem Android-Projekt keine Bibliothek eines Drittanbieters verwenden, müssen Sie Jetifier nicht verwenden, da Jetifier nur dazu beiträgt, die Bibliothek eines Drittanbieters mit Ihrem Projekt kompatibel zu machen, falls Sie auf AndroidX migrieren. Damit Ihr Projekt Jetifier verwendet, schreiben Sie den folgenden Code in gradle.properties .
android.enableJetifier=true
android.useAndroidX=true
Wenn Sie nicht auf AndroidX migrieren und die vorherige Art der Verwendung von Android-Bibliotheken verwenden (z. B. com.android.support ), müssen diese Bibliotheken von Drittanbietern nicht kompatibel gemacht werden, da diese Bibliotheken von Drittanbietern bereits mit der vorherigen Methode von kompatibel sind mit Android-Bibliotheken. In diesem Fall müssen Sie Jetifier nicht verwenden. Jetzt müssen Sie keine Zeilen mehr schreiben, oder Sie können einfach wie folgt schreiben, um die Werte in Zukunft zu ändern und zu AndroidX zu wechseln: -
android.enableJetifier=false
android.useAndroidX=false
Jetifier
Der Jetifier ist ein praktisches Tool, dependencies
zu dem Sie AndroidX
beim Erstellen automatisch migrieren . Ohne sie benötigen Sie jede Abhängigkeit, die Sie verwenden, um eine AndroidX-Version zu haben, bevor Sie migrieren können, und das wird wahrscheinlich für einige Zeit nicht passieren.
Es gibt eine wichtige Einschränkung zu beachten: Der Jetifier funktioniert nur mit verpackten Artefakten. Es funktioniert nicht mit Ihrem Quellcode, den Sie voraussichtlich selbst aktualisieren werden
Um AndroidX zu aktivieren, müssen Sie Ihrer gradle.properties
Datei 2 Flags hinzufügen . Das erste Flag weist das Android-Plugin an, AndroidX
Pakete anstelle von zu verwenden AppCompat
, und das zweite Flag aktiviert Folgendes Jetifier
:
android.useAndroidX=true
android.enableJetifier=true
Sehen Sie diese , diese Post zu verstehen , mehr über AndroidX
Aus dem offiziellen Dokument
Wenn dieses Flag auf true gesetzt ist, migriert das Android-Plugin vorhandene Bibliotheken von Drittanbietern automatisch, um AndroidX-Abhängigkeiten zu verwenden, indem die Binärdateien neu geschrieben werden. Das Flag ist standardmäßig falsch, wenn es nicht angegeben ist.
Es ist nützlich für die Kompatibilität. Wenn ein Verbraucher androidX
und ein Produzent verwendet support
. Zum Beispiel, wenn Ihr Projekt AndroidX
eine Abhängigkeit verwenden möchte, die support library
anstelle von AndroidX
[Beispiel] verwendet wird.
Fügen Sie diese beiden Zeilen hinzu android.useAndroidX = true
android.enableJetifier = true
in buid.gradle Es hat bei mir funktioniert
implementation "com.commonsware.cwac:document:0.3.0"
in Ihremdependencies
. Diese Bibliotheksversion hat eine transitive Abhängigkeit voncom.android.support:support-annotations:27.0.2
. Sie möchten jedochandroidx.annotation:annotation
als Teil der Verwendung anderer AndroidX-Abhängigkeiten verwenden. Jetifier würde irgendwie aktualisieren, umcom.commonsware.cwac:document
zu verwendenandroidx.annotation:annotation
.