He configurado correctamente el entorno del SDK de Android-P. Cuando intento usar la biblioteca de soporte de diseño de Android, me enfrento a errores de compilación del proyecto. Las configuraciones del proyecto son:
IDE: 3.2 Canary 17 API de destino: 28 API de compilación: 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 fallido es:
Error de fusión de manifiesto: la aplicación de 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 valor = (android.support.v4.app.CoreComponentFactory). Sugerencia: agregue 'tools: replace = "android: appComponentFactory"' al elemento en AndroidManifest.xml: 6: 5-40: 19 para anularlo.
fuente
Respuestas:
Puede utilizar la versión anterior de los paquetes de API de artefactos o el nuevo Androidx, nunca ambos.
Si desea utilizar la versión anterior, reemplace sus dependencias con
si quieres usar Androidx:
fuente
com
no se reemplazómaterial
en elimplementation
?Actualización importante
Android no actualizará las bibliotecas de soporte después
28.0.0
.Así que usa la biblioteca AndroidX .
androidx
o cualquier biblioteca, porque alpha, beta, rc pueden tener errores que no desea enviar con su aplicación.En tu caso
fuente
Agrega esto:
a tu aplicación de manifiesto
Espero eso ayude
fuente
@string/action_settings
?* What went wrong: Execution failed for task ':app:generateDebugBuildConfig'. > org.xml.sax.SAXParseException; systemId: file:/C:/D/code/js/emps_app/android/app/src/main/AndroidManifest.xml; lineNumber: 14; columnNumber: 52; The prefix "tools" for attribute "tools:replace" associated with an element type "application" is not bound.
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools">
He usado esa opción:
https://developer.android.com/jetpack/androidx/migrate
fuente
Google ha introducido nuevas dependencias de AndroidX . Necesita migrar a AndroidX, es simple.
Reemplacé todas las dependencias a las dependencias de AndroidX
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ú.
fuente
1. Agregó estos códigos a su aplicación / build.gradle:
2.Sdk modificado y versión de herramientas a 28:
2.En su archivo AndroidManifest.xml, debe agregar dos líneas:
Gracias por la respuesta @Carlos Santiago: la biblioteca de soporte de diseño de Android para API 28 (P) no funciona
fuente
La biblioteca de soporte de diseño para androidX es
implementation 'com.google.android.material:material:1.0.0'
fuente
abra el archivo gradle.properties y agregue estas dos líneas:
limpiar y construir
fuente
Nota: No debe utilizar las dependencias com.android.support y com.google.android.material en su aplicación al mismo tiempo.
Agregue Material Components para Android en su archivo build.gradle (aplicación)
Si su aplicación depende actualmente de la biblioteca de soporte de diseño original, puede hacer uso de la opción Refactor to AndroidX… proporcionada por Android Studio. Al hacerlo, se actualizarán las dependencias y el código de su aplicación para usar las bibliotecas androidx y com.google.android.material recién empaquetadas.
Si aún no desea cambiar a los nuevos paquetes androidx y com.google.android.material, puede usar Materiales Components a través de la dependencia com.android.support:design:28.0.0-alpha3.
fuente
En primer lugar, debe buscar gradle.properties y estos valores deben ser verdaderos . Si no puede verlos, tiene que escribir.
Después de eso, puede usar las dependencias de AndroidX en su build.gradle (Módulo: aplicación) . Además, debe verificar compileSDKVersion y targetVersion . Deben tener un mínimo de 28. Por ejemplo, estoy usando 29.
Entonces, un ejemplo de dependencia de androidx:
Por lo tanto, debe buscar y leer con atención. Código feliz.
@canerkaseler
fuente
Cruzo esa situación reemplazando todos
androidx.*
aappropiate package name
.cambia tu linea
a
CÉLEBRE
tools:replace="android:appComponentFactory"
de AndroidManifestfuente
El siguiente código funcionó perfectamente conmigo:
fuente
Prueba esto:
fuente
La documentación de Android es clara al respecto. Ve a la página siguiente. Debajo, hay dos columnas con los nombres "ARTEFACTO DE CONSTRUCCIÓN ANTIGUA" y "Artefacto de compilación de AndroidX"
https://developer.android.com/jetpack/androidx/migrate
Ahora tienes muchas dependencias en gradle, simplemente haz coincidir las que tienen los artefactos de compilación de Androidx y reemplázalas 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 "public class MainActivity extiende AppCompatActivity" y escriba la misma palabra nuevamente. Pero esta vez la biblioteca androidx se importa. Hasta ahora, el archivo de soporte de appcompact se importó y usado (también, elimine esa declaración de importación de appcompact).
Además, vaya a su archivo de diseño. Suponga que tiene un diseño de restricción, luego puede notar que el diseño de restricción de la primera línea en el archivo xml tiene algo relacionado con appcompact. Así que simplemente elimínelo y escriba el diseño de restricción nuevamente. Pero ahora se agrega el diseño de restricción relacionado con androidx.
repita esto para tantas actividades y tantos archivos de diseño xml.
Pero no se preocupe: Android Studio muestra todos estos posibles errores durante la compilación.
fuente
Tuvo un problema similar. Agregado en build.gradle y funcionó para mí.
fuente
si quieres solucionar este problema sin migrar a AndroidX (no lo recomiendo)
este problema de fusión de manifiesto está relacionado con una de sus dependencias con androidX.
debe disminuir la versión de lanzamiento de esta dependencia. para mi caso:
Estaba usando google o firebase
Tengo que disminuirlo 15.0.1 para usarlo en la biblioteca de soporte.
fuente
Añadiendo
androidTestImplementation 'androidx.test:runner:1.2.0-alpha05'
obras para mí.fuente