¿Puedo usar la biblioteca que usó el soporte de Android con proyectos Androidx?
android-jetpack (4)
Utilicé estas dos líneas de código en la etiqueta de la aplicación en manifest.xml y funcionó.
tools:replace="android:appComponentFactory" android:appComponentFactory="whateverString"
Fuente: https://github.com/android/android-ktx/issues/576#issuecomment-437145192
Lo sé, androidx y la dependencia de soporte que causa el error multidex No podemos usar androidx y soporte de Android al mismo tiempo. Así que migro totalmente a androidx. pero una de mis dependencias lib usó el soporte de Android "lottie".
¿Qué podemos hacer en la situación anterior? ¿Debo eliminar ''lottie'' de mi proyecto.
debajo está mi gradle
defaultConfig {
minSdkVersion 19
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
vectorDrawables.useSupportLibrary = true
multiDexEnabled true
}
ext{
lottieVersion = "2.5.4"
}
dependencies {
implementation fileTree(dir: ''libs'', include: [''*.jar''])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
def androidx = "1.0.0-rc01"
api "androidx.constraintlayout:constraintlayout:1.1.2"
api "androidx.appcompat:appcompat:$androidx"
api "androidx.recyclerview:recyclerview:$androidx"
api "androidx.cardview:cardview:$androidx"
api "androidx.core:core-ktx:$androidx"
api "com.google.android.material:material:1.0.0-rc01"
implementation "com.google.code.gson:gson:2.8.5"
implementation "androidx.multidex:multidex:2.0.0"
implementation "com.airbnb.android:lottie:$lottieVersion"
}
Agregar manualmente
android.useAndroidX=true
y
android.enableJetifier=true
lo que me ha costado mucho.
Debido a que es un error o
Suggestion: add ''tools:replace="android:appComponentFactory"'' to <application>
Para habilitar Jet-fire en el proyecto hay una opción en Android Studio
Seleccione su proyecto ---> clic derecho
aplicación ----> Refactor ----> Migrar a AndroidX
Se muestra en la imagen de abajo:
Después de hacer clic en Migrar a AndroidX .
Le pedirá confirmación y respaldo para su proyecto.
Y último paso te pedirá que hagas refactor.
Después de hacer Refactor, verifique que su gradle.properties tenga
android.useAndroidX=true
y
android.enableJetifier=true
.
Si no lo están, agregue estas dos líneas a su archivo gradle.properties:
android.useAndroidX=true
android.enableJetifier=true
Puede habilitar
Jetifier
en su proyecto, que básicamente intercambiará las dependencias de la
Android Support Library
en las dependencias de su proyecto con
AndroidX
-ones.
(Por ejemplo, sus dependencias de Lottie cambiarán de Soporte a AnroidX)
De la documentación de Android Studio ( https://developer.android.com/studio/preview/features/ ):
El complemento Gradle de Android proporciona los siguientes indicadores globales que puede establecer en su archivo gradle.properties:
- android.useAndroidX: cuando se establece en verdadero, esta bandera indica que desea comenzar a usar AndroidX a partir de ahora. Si el indicador está ausente, Android Studio se comporta como si el indicador estuviera establecido en falso.
- android.enableJetifier: cuando se establece en verdadero, este indicador indica que desea tener soporte de herramientas (desde el complemento Gradle de Android) para convertir automáticamente las bibliotecas de terceros existentes como si estuvieran escritas para AndroidX. Si el indicador está ausente, Android Studio se comporta como si el indicador estuviera establecido en falso.
Condición previa para el jetifier:
-
Tienes que usar al menos
Android Studio 3.2
Para habilitar el jetifier, agregue esas dos líneas a su archivo
gradle.properties
:
android.useAndroidX=true
android.enableJetifier=true
Finalmente, revise las notas de la versión de AndroidX, ya que
jetifier
aún tiene algunos problemas con algunas bibliotecas (por ejemplo, Dagger Android):
https://developer.android.com/topic/libraries/support-library/androidx-rn
No tienes que preocuparte
Simplemente habilita Jetifier en tu proyecto.
- Actualice Android Studio a 3.2.0 o más reciente.
-
Abra
gradle.properties
y agregue debajo de dos líneas.android.enableJetifier=true android.useAndroidX=true
Convierte todas las bibliotecas de soporte de su dependencia a AndroidX en tiempo de ejecución (puede que tenga errores de compilación, pero la aplicación se ejecutará).