¿Por qué Android no puede lidiar con el conflicto de nombres de recursos entre Project y Library?
Tengo un proyecto A que hace referencia a la Biblioteca B, A y B tienen el mismo nombre y el mismo tipo, pero su valor es diferente. Creo que aapt debe tratar este problema que asegurarse de que el proyecto y la biblioteca de acceso el valor correcto. además de cambiar el nombre de todos los recursos en el proyecto o la biblioteca, ¿qué más debo hacer para resolver este problema?
- ¿Cómo puedo obtener el ID de recurso del icono de la aplicación en mi aplicación desde una API
- Nombre del directorio de recursos no válido para los valores con código de país
- Class.getResource (className) que me da NullPointerException
- Almacenamiento de IDs extraibles en una matriz XML
- Método Android con prioridad (paquete) visibilidad sobreestablecimiento (no debería funcionar, pero sí, ¿por qué?)
- "R no se puede resolver a una variable"?
- Acceso a recursos e identificadores de recursos de otras aplicaciones
- Android: pasa un ID de recurso como un parámetro
- ¿Cómo se usa Resources.getFraction ()?
- Uso conveniente de Android XmlResourceParser?
- No se puede convertir la cadena '@ bool / some_key' a la clase de destino 'boolean'
- Recursos $ NotFoundException drawable-xhdpi de un recurso extraíble
- Establecer android: windowIsFloating programmatically
El sistema de compilación intencionalmente hace que todos los recursos del proyecto se superpongan en la parte superior de los recursos de la biblioteca. Esto se hace a propósito para poder personalizar un recurso de biblioteca de forma diferente dependiendo de la aplicación que lo utilice.
Si desea evitar que esto suceda sin su conocimiento siempre hemos recomendado a los usuarios que usen prefijo en los recursos de la biblioteca.
Cambiar el comportamiento en este punto rompería muchos proyectos de muchas personas. Hemos estudiado la posibilidad de que sea una opción, pero no sucederá antes de que el nuevo sistema de compilación esté terminado.
Según el proceso de construcción de Android , todos los proyectos y bibliotecas (y todos los recursos de todos ellos) se combinan como parte del proceso apkbuilder. Si hay un conflicto entre el proyecto y la biblioteca (o entre dos bibliotecas), la compilación final no sabrá a qué hacer referencia ya que comparten el mismo nombre. Por supuesto, esto tiene beneficios ya que puede hacer referencia a los recursos de la biblioteca en su proyecto por su nombre, aunque el proceso de creación subyacente está desactivando los IDs subyacentes.
Importe el archivo R.java adecuado para resolver los conflictos de recursos.
-
Asegúrese de que el nombre del paquete y los nombres de los paquetes de la biblioteca sean diferentes.
-
Si necesita sus recursos de bibliotecas, consulte a ellos por
library.packagename.R.drawable.resourceId
y no porR.drawable.resourceId
-
Compruebe sus archivos gen si tiene 2 archivos R.java.
- android: mostrar la notificación en un momento específico?
- Facebook SDK 3.0 para Android sin Fragmentos no funciona