Soporte de Android Repo 46.0.0 con Android Studio 2.3

Actualicé hoy mi repository de soporte a 46.0.0 cuando apareció la notificación de Android Studio.

Voy el error a continuación:

Error: ejecución fallida para la tarea ‘: app: processDevDebugManifest’.

Error en la fusión del manifiesto: el atributo meta-data#android.support.VERSION@value value = (25.3.0) de [com.android.support:support-v13:25.3.0] AndroidManifest.xml: 27: 9-31 también es presente en [com.android.support:preference-v7:26.0.0-alpha1] AndroidManifest.xml: 24: 9-38 value = (26.0.0-alpha1). Sugerencia: agregue ‘tools: replace = “android: value”‘ al elemento en AndroidManifest.xml: 25: 5-27: 34 para sobrescribir.

Actualicé todas mis dependencias para usar la Revisión 26.0.0 Alpha 1 de 25.3.0, pero resulta que necesito reemplazar el compileSdk de 25 a 26. No puede hacer eso si tiene AS 2.3, necesita obtener el versión inestable alfa / beta de canario.

Este enlace muestra los cambios: https://developer.android.com/topic/libraries/support-library/revisions.html#26-0-0-alpha1

Y con respecto a la migración a la nueva O de Android, ese es el enlace: https://developer.android.com/preview/migration.html

Parece que usar una versión estable de AS no funcionará con el nuevo repository.

¿Cómo puedo volver a la versión 45 de Android Studio Repository en lugar de la nueva 46?

** Actualización: el manifiesto fusionado muestra que uno de los manifiestos de la biblioteca generada contiene

 

Pero dado que es una edición de archivo generada es inútil, es por eso que por ahora me quedaría con la revolución 45 hasta que el nuevo AS esté en construcción estable

Cuál es el problema

Algunas bibliotecas dependen de la versión “X o posterior” de las bibliotecas de soporte de Android, por lo que la resolución de dependencia de Gradle toma lo que sea más nuevo, ignorando que realmente tiene una versión precisa especificada en su bloque de dependencies .

Esto no es lo que quieres. Desea que todas las bibliotecas de soporte tengan la misma versión y la versión principal tenga que coincidir con la versión de comstackción del SDK.

Cual es la solución

Afortunadamente puede forzar una versión de biblioteca de soporte específica.

Coloque esto al final de su módulo de aplicación build.gradle :

 configurations.all { resolutionStrategy.eachDependency { DependencyResolveDetails details -> def requested = details.requested if (requested.group == 'com.android.support') { // Skip multidex because it follows a different versioning pattern. if (!requested.name.startsWith("multidex")) { details.useVersion '25.3.0' } } } } 

Por supuesto, reemplace la versión con lo que sea que esté usando.

Los valores de versión para bibliotecas de soporte en bloque de dependecies ahora son irrelevantes.

Si tienes dudas

Este es un método bien documentado y está funcionando.

Qué puedes hacer para ayudar

Encuentre las bibliotecas que dependen de una variedad de versiones de la biblioteca de soporte

 gradlew dependencies --configuration compile -p  | grep , 

y dejar que los autores de dichas bibliotecas sepan que deben depender transitoriamente de las librerías de soporte más antiguas con las que su biblioteca puede hacer .

Esto tiene como objective evitar el problema por completo.

Su es una solución para solucionarlo:

  1. Mover a la vista del explorador del proyecto
  2. Llegar al fondo es Bibliotecas externas
  3. Ver qué biblioteca está usando 26.0.0-alpha6
  4. Ahora escribe esto en app.gradle sobre la base de la biblioteca en el Paso 3

Ex. en mi caso:

 configurations.all { resolutionStrategy.force 'com.android.support:appcompat-v7:25.3.0' resolutionStrategy.force 'com.android.support:support-v13:25.3.0' } 

Esto obligará al proyecto a usar la biblioteca mencionada.

Creo que la mejor solución es simplemente revertir la Biblioteca de soporte de Android a la versión 45.

Para hacer esto, abra este enlace (cambie la versión a lo que se ajuste a sus necesidades)

https://dl-ssl.google.com/android/repository/android_m2repository_r45.zip

Cuando se descarga, descomprima y copie m2repository a android-sdk-root-folder \ extras \ android. Asegúrese de eliminar el repository m2 existente antes de descomprimir para evitar problemas.

Paso 1

Para escapar de Gradle buscando versiones incompatibles de com.android.support , una solución rápida es agregar el siguiente código en el módulo de la aplicación build.gradle .

 dependencies { //noinspection GradleCompatible } 

¡Esta es una solución temporal que no resuelve los problemas subyacentes! Ayudó a continuar desarrollando su aplicación con modificaciones mínimas.

Paso 2

Agregue esto al archivo de manifiesto principal AndroidManifest.xml .

  

Esta entrada se eliminará cuando esté disponible una de las próximas actualizaciones del repository de soporte.

Paso 3

Agregue el siguiente código al final del archivo build.gradle módulo de la aplicación:

 configurations.all { resolutionStrategy.eachDependency { details -> def requested = details.requested if (requested.group == 'com.android.support') { if (!requested.name.startsWith("multidex")) { details.useVersion '25.3.1' } } } } 

NB : se recomienda asegurarse de que sus bibliotecas Gradle estén actualizadas y sean compatibles para evitar errores en el tiempo de ejecución.

¡Esta es una solución temporal que no resuelve los problemas subyacentes! Me ayudó a continuar desarrollando software con modificaciones mínimas. Solo agregue esto al manifiesto principal:

  

Se espera que esta entrada se elimine de nuevo con una de las próximas actualizaciones del repository de soporte.

SOLUCIÓN: La solución marcada funcionó para mí añadiendo lo siguiente a 4 de mis 10 archivos build.gradle:

 configurations.all { resolutionStrategy.eachDependency { details -> def requested = details.requested if (requested.group == 'com.android.support') { if (!requested.name.startsWith("multidex")) { details.useVersion '25.3.0' } } } } 

para mí, el problema era que las versiones no eran las mismas aquí

 implementation 'com.android.support:appcompat-v7:**26.0.0-beta1**' implementation 'com.android.support:support-v4:**26.0.0-beta1**' implementation 'com.android.support:design:**26.0.0-beta1**' 

y la vista de la tarjeta era

 compile 'com.android.support:cardview-v7:26.1.0' 

así que cambié las bibliotecas de versión a …

 implementation 'com.android.support:appcompat-v7:26.1.0' implementation 'com.android.support:support-v4:26.1.0' implementation 'com.android.support:design:26.1.0' 

Espero esta ayuda, buena suerte

solo haz esto, eso es todo:

compile ‘com.android.support:appcompat-v7:25.3.1’

aquí v7: 25.3.1 es mi versión actual que acaba de poner urs.

en el archivo gradle de la aplicación