tools support suggestion merger failed attribute application appcomponentfactory android android-studio android-design-library android-9.0-pie

support - La biblioteca de soporte de diseño de Android para API 28(P) no funciona



suggestion: add ''tools:replace="android:appcomponentfactory"'' (15)

He configurado el entorno de Android-P SDK con éxito. Cuando intento usar la biblioteca de soporte de diseño de Android, me enfrento a los errores de construcción del proyecto. Las configuraciones del proyecto son:

IDE: 3.2 Canary 17 Target API: 28 Compilar API: 28

apply plugin: ''com.android.application'' apply plugin: ''kotlin-android'' apply plugin: ''kotlin-android-extensions'' android { compileSdkVersion 28 defaultConfig { applicationId "com.app.navigationpoc" minSdkVersion 21 targetSdkVersion 28 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile(''proguard-android.txt''), ''proguard-rules.pro'' } } } dependencies { implementation fileTree(include: [''*.jar''], dir: ''libs'') implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" implementation ''androidx.appcompat:appcompat:1.0.0-alpha3'' implementation ''androidx.constraintlayout:constraintlayout:1.1.1'' testImplementation ''junit:junit:4.12'' androidTestImplementation ''androidx.test:runner:1.1.0-alpha3'' androidTestImplementation ''androidx.test.espresso:espresso-core:3.1.0-alpha3'' implementation ''com.android.support:design:28.0.0-alpha3'' implementation ''com.android.support:cardview-v7:28.0.0-alpha3'' }

Y el error de compilación fallida es:

La fusión del manifiesto falló: la aplicación del atributo @ appComponentFactory value = (androidx.core.app.CoreComponentFactory) de [androidx.core: core: 1.0.0-alpha3] AndroidManifest.xml: 22: 18-86 también está presente en [com.android .support: support-compat: 28.0.0-alpha3] AndroidManifest.xml: 22: 18-91 value = (android.support.v4.app.CoreComponentFactory). Sugerencia: agregue ''herramientas: reemplazar = "android: appComponentFactory"'' al elemento en AndroidManifest.xml: 6: 5-40: 19 para anular.


Actualización importante

Android no actualizará las bibliotecas de soporte después del 28.0.0 .

Esta será la última versión de la característica en el paquete android.support, y se recomienda a los desarrolladores que migren a AndroidX 1.0.0 .

Así que usa la biblioteca AndroidX .

  • No uses tanto el soporte como el AndroidX en el proyecto.
  • Su módulo de biblioteca o sus dependencias aún pueden tener bibliotecas de soporte. Androidx Jetifier lo manejará.
  • Use una versión estable de androidx o de cualquier biblioteca, ya que alfa, beta, rc pueden tener errores que no desea enviar con su aplicación.

En tu caso

dependencies { implementation ''androidx.appcompat:appcompat:1.0.0'' implementation ''androidx.constraintlayout:constraintlayout:1.1.1'' implementation ''com.google.android.material:material:1.0.0'' implementation ''androidx.cardview:cardview:1.0.0'' }


1. Agregó estos códigos a su aplicación / build.gradle:

configurations.all { resolutionStrategy.force ''com.android.support:support-v4:26.1.0'' // the lib is old dependencies version; }

2. Versión modificada de sdk y herramientas a 28:

compileSdkVersion 28 buildToolsVersion ''28.0.3'' targetSdkVersion 28

2.En su archivo AndroidManifest.xml, debe agregar dos líneas:

<application android:name=".YourApplication" android:appComponentFactory="anystrings be placeholder" tools:replace="android:appComponentFactory" android:icon="@drawable/icon" android:label="@string/app_name" android:largeHeap="true" android:theme="@style/Theme.AppCompat.Light.NoActionBar">

Gracias por la respuesta @Carlos Santiago: la biblioteca de soporte de diseño de Android para API 28 (P) no funciona


A continuación el código funcionó perfectamente conmigo:

dependencies { api ''com.android.support:design:28.0.0-alpha3'' implementation fileTree(dir: ''libs'', include: [''*.jar'']) implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" testImplementation ''junit:junit:4.12'' androidTestImplementation ''androidx.test:runner:1.1.0-alpha2'' androidTestImplementation ''androidx.test.espresso:espresso-core:3.1.0-alpha2'' }


Abra el archivo gradle.properties y agregue estas dos líneas:

android.useAndroidX = true android.enableJetifier = true

limpiar y construir


Agrega esto:

tools:replace="android:appComponentFactory" android:appComponentFactory="whateverString"

a su aplicación manifiesta

<application android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" tools:replace="android:appComponentFactory" android:appComponentFactory="whateverString">

Espero eso ayude


Google ha introducido nuevas dependencias de AndroidX . Necesitas migrar a AndroidX, es simple.

Reemplace todas las dependencias a dependencias de AndroidX

Antigua dependencia de diseño

dependencies { // ... implementation ''com.google.android.material:material:1.0.0-beta01'' // ...

Nueva dependencia de diseño de AndroidX

implementation ''com.android.support:design:28.0.0''

Puede encontrar las dependencias de AndroidX aquí https://developer.android.com/jetpack/androidx/migrate


Opción de migración automática de AndroidX (compatible con Android Studio 3.3+)

Migre un proyecto existente para usar AndroidX seleccionando Refactor> Migrar a AndroidX en la barra de menú.



La biblioteca de soporte de diseño para androidX es la implementation ''com.google.android.material:material:1.0.0''


La documentación de Android está clara en esto. Vaya a la página siguiente. Debajo, hay dos columnas con los nombres "OLD BUILD ARTIFACT" y "AndroidX build artifact"

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

Ahora tiene muchas dependencias en gradle. Solo haga coincidir aquellas con artefactos de compilación de Androidx y reemplácelos en gradle.

Eso no será suficiente.

Vaya a su MainActivity (repita esto para todas las actividades) y elimine la palabra AppCompact Activity en la declaración "clase pública MainActivity extiende AppCompatActivity" y escriba la misma palabra otra vez. Pero esta vez la biblioteca androidx se importa. utilizado (también, eliminar esa declaración de importación appcompact).

También, vaya a su archivo de diseño. Supongamos que tiene un diseño de restricción, entonces puede notar que el diseño de la primera línea de restricción en el archivo xml tiene algo relacionado con appcompact. Así que simplemente elimínelo y vuelva a escribir el diseño de Restricción. Pero ahora se agrega el diseño de la restricción relacionada con androidx.

repita esto para tantas actividades y tantos archivos de diseño XML.

Pero no se preocupe: Android Studio muestra todos los errores posibles mientras compila.


La solución correcta es como se discute en this respuesta.

jetifier habilitar el jetifier , agregando esas dos líneas a su archivo gradle.properties :

android.useAndroidX=true android.enableJetifier=true

Básicamente, esto intercambiará las dependencias de la biblioteca de soporte de Android en las dependencias de su proyecto con AndroidX-ones .

En caso de que el gradle.properties no exista, solo cree un archivo llamado gradle.properties en su proyecto raíz y agregue las líneas mencionadas anteriormente:

root |--gradle.properties |--build.gradle |--settings.gradle |--app |----build.gradle


Prueba esto:

implementation ''com.android.support:appcompat-v7:28.0.0-alpha1''


Puede utilizar la versión de artefactos de los paquetes API anteriores o el nuevo Androidx, nunca ambos.

Si quieres usar la versión anterior, reemplaza tus dependencias por

dependencies { implementation fileTree(include: [''*.jar''], dir: ''libs'') implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" implementation ''com.android.support:appcompat-v7:28.0.0-alpha3'' implementation ''com.android.support.constraint:constraint-layout:1.1.1'' testImplementation ''junit:junit:4.12'' androidTestImplementation ''com.android.support.test:runner:1.0.2'' androidTestImplementation ''com.android.support.test.espresso:espresso-core:3.0.2'' implementation ''com.android.support:design:28.0.0-alpha3'' implementation ''com.android.support:cardview-v7:28.0.0-alpha3'' }

Si quieres usar Androidx:

dependencies { implementation fileTree(include: [''*.jar''], dir: ''libs'') implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" implementation ''androidx.appcompat:appcompat:1.0.0-alpha3'' implementation ''androidx.constraintlayout:constraintlayout:1.1.1'' testImplementation ''junit:junit:4.12'' androidTestImplementation ''androidx.test:runner:1.1.0-alpha3'' androidTestImplementation ''androidx.test.espresso:espresso-core:3.1.0-alpha3'' implementation ''com.google.android.material:material:1.0.0-alpha3'' implementation ''androidx.cardview:cardview:1.0.0-alpha3'' }


Tenía un problema similar. Agregado en build.gradle y funcionó para mí.

implementation ''com.android.support:appcompat-v7:28.0.0-alpha1''


androidx.* esa situación reemplazando todos los androidx.* Para androidx.* appropiate package name .

cambia tu linea

implementation ''androidx.appcompat:appcompat:1.0.0-alpha3'' implementation ''androidx.constraintlayout:constraintlayout:1.1.1'' androidTestImplementation ''androidx.test:runner:1.1.0-alpha3'' androidTestImplementation ''androidx.test.espresso:espresso-core:3.1.0-alpha3''

a

implementation ''com.android.support:appcompat-v7:28.0.0-alpha3'' implementation ''com.android.support.constraint:constraint-layout:1.1.1'' androidTestImplementation ''com.android.support.test:runner:1.0.2'' androidTestImplementation ''com.android.support.test.espresso:espresso-core:3.0.2''

CÉLEBRE

  • eliminar tools:replace="android:appComponentFactory" de AndroidManifest

Nota: no debe usar las dependencias com.android.support y com.google.android.material en su aplicación al mismo tiempo.

agregar componentes de material para Android

implementation ''com.google.android.material:material:1.0.0-rc01''

}

Si su aplicación actualmente depende de la Biblioteca de Soporte de Diseño original, puede hacer uso de la opción Refactor to AndroidX… provista por Android Studio. Al hacerlo, se actualizarán las dependencias y el código de su aplicación para usar las bibliotecas recién empaquetadas de androidx y com.google.android.material.

Si aún no desea cambiar a los nuevos paquetes androidx y com.google.android.material, puede usar los Componentes de materiales a través de la dependencia com.android.support:design:28.0.0-alpha3.