Obteniendo el error dice: "El nombre de la entrada 'res / layout / test_toolbar.xml' colisionó" al crear el apk firmado

17

Actualicé mi estudio de Android de 3.5.x a 3.6 hoy y recibo un error al generar apk firmado para la variante de compilación que muestra el siguiente mensaje: el nombre de la entrada 'res / layout / test_toolbar.xml' colisionó No tengo ningún diseño llamado así uno en todo el proyecto en absoluto. Tengo una variante de compilación personalizada llamada " etapa " y siempre que intento construir una apk firmada, siempre falla. Cuento encontrar alguna solución todavía. Por favor ayudame con este problema. Gracias

Actualización: el mismo problema puede ocurrir con estos mensajes siguientes también (como lo encontré en AS - 3.6.1 ). Así que no te preocupes por este tipo de mensajes desconocidos y no solucionables. Hasta ahora encontré dos nuevos tipos de mensajes al generar apk firmado:

  • Entry name 'kotlin/collections/MapWithDefault.kotlin_metadata' collided
  • Access Denied

La solución es la misma. A veces puede necesitar Invalidate Cache and Restartsu AS para esto. Déjame saber tus hallazgos. Gracias

Saadat
fuente

Respuestas:

16

Antes de leer la solución a continuación, lea mi actualización del 01.04.2020, el problema es más profundo y está en su código.

Tengo el mismo problema después de esta actualización 3.6.

* La solución rápida es: *

  1. eliminar projectFolder \ build
  2. eliminar projectFolder \ debug *
  3. eliminar projectFolder \ release *
  4. eliminar projectFolder \ app \ build
  5. eliminar projectFolder \ app \ build \ debug *
  6. eliminar projectFolder \ app \ build \ release *

Por lo tanto, debe eliminar todos los directorios de compilación, depuración y publicación.

Tenga en cuenta que es posible que no pueda eliminar directorios completos de depuración y publicación , pero puede eliminar todo su contenido.

UPD:

Creo que han solucionado este error hoy: ingrese la descripción de la imagen aquí

UPD 03.03.2020: Desafortunadamente, el error no se solucionó.

UPD 01.04.2020: (No es broma del 1 de abril :))

Desde el mes que trabajé con los desarrolladores de Android Studio y hoy me dijeron que usara jdk en lugar de usar jre, porque uno de los errores profundos en los registros lo decía.

Después de configurar jdk (Archivo- > Estructura del proyecto-> Ubicación del SDK- > Ubicación del JDK ) en lugar de jre, tengo algunos otros errores que no se muestran en la "salida de compilación", por lo que ejecuto Analizar -> Inspeccionar código y obtuve OCHO errores tales como referirse a una identificación de vista incorrecta en diseños, errores con orientación (hola a tools:ignore="MissingDefaultResource") y errores en manifiesto también con orientación: leí que esta es una nueva actualización en 3.6.1 - sobre paisaje o retrato screenOrientation, solucionado rápidamente por Studio con esto: <activity tools:ignore="LockedOrientationActivity" />

Cuando se corrigieron todos los errores con Analizar -> Inspeccionar código, he generado con éxito el APK firmado usando jdk y luego usando jre (solo para prueba).

En resumen, este error se debe a errores profundos que solo puede encontrar con la Inspect Codeherramienta.

Creo que AS no pensará que esto sea un error, creo que dirán que esta es una nueva característica para mejorar su código. También creo que debería intentar inspeccionar su código incluso sin configurar jdk en lugar de jre.

Recomendación adicional del soporte de AS:

Por cierto, al exportar una releasecompilación, también ejecutamos lintVitalque realiza algunas comprobaciones adicionales y tiene algunos errores marcados como fatal. Esta comprobación es costosa, por lo que no ocurre en las debugcompilaciones

danyapd
fuente
1
Muchas gracias. Ya lo resolví. ¿Estás seguro de que esta es una versión estable (realmente)?
Saadat
1
@Saadat no, lo he comprobado ahora, el error sigue ahí.
danyapd
Muchas gracias. Iba a actualizar nuevamente esperando arreglarlo. @danyapd
Saadat
Me parece que también tengo que eliminar projectFolder\app\[all flavor folders].
drmrbrewer
1
Gracias, lo Build > Rebuild Projectarreglé para mí, en Android Studio 3.6.2.
gregn3
7

Mientras genera el apk, verifique la carpeta de destino, de la cual elimine output.json y app-debug.apk de la carpeta de depuración. Intenta construir lo mismo después de esto. AFAIK, es un error para Android Studio, espero que puedan solucionarlo pronto :)

Ameena Shafeer
fuente
1
Gracias por su respuesta. Ya hice lo mismo y resolví mi problema. :)
Saadat
1
¡¡Muchas gracias!! encontré esto después de 2.5 horas de lucha
Kishita Variya
Gracias por esto, funcionó
Brian
4

Eliminé las salidas de compilación anteriores para la variante de compilación, incluido el archivo APK. Eso es lo que me ayudo

Vladislav Vatrushkin
fuente
1
Intenté eliminar el builddirectorio como un todo, todavía tengo el mismo problema. ¿Puedes elaborar lo que hiciste en su totalidad?
Pusparaj
¿Está eliminando el directorio de compilación en la raíz del proyecto y el directorio de aplicación / compilación también? En mi proyecto, la ruta de salida de apk se cambia y simplemente elimino el archivo apk anterior donde estaba ubicado.
Vladislav Vatrushkin
1

Sucede cuando usó viewBinding automático, Binding usando Kotlin o la función viewBinding de 3.6.

En caso de que esté agregando archivos cuyo elemento comparta las mismas identificaciones, ViewBinding confunde y crea dicho error.

Permítame ayudarlo por ejemplo Clase de adaptador que tiene dos archivos de diseño que se separan por vista Tipo:

import kotlinx.android.synthetic.main.frag_subscription_recommend.view.*


override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
   return ViewHolder(
        LayoutInflater.from(parent.context).inflate(
            if (viewType == 1) {
                R.layout.frag_subscription_recommend
            } else
                R.layout.frag_subscription_common,
            parent,
            false
        )
    )
}

onBinding(){
  holder.itemView.id_button_submit.setOnClickListener {}
}

// lo cual, en caso de confusión sobre qué recurso o diseño completo llena el requisito porque ambos tienen los mismos identificadores de botón. en caso de que tengas que usar:

 onBinding(){
  holder.itemView.findViewById<Button>(R.id.id_button_submit).setOnClickListener {}
}

que permiten la implementación anterior.

Avísame si esto funciona de tu lado?

Jatin Sahgal
fuente
1
Lo sentimos, pero el problema fue con los directorios de compilación, depuración y lanzamiento. incluido el archivo json de salida. De todos modos, gracias por su respuesta
Saadat
1

¡Tuve el mismo error después de actualizar Android Studio y solucioné el problema solo limpiando el proyecto (Build> Clean Project)! :)

Agathe Casgrain-Cyr
fuente