Android estilo Recopilación de recursos (aapt) fallando: Tabla de recursos no válidos: tamaño de encabezado 0xc

Acabo de pasar unas horas con un recurso horrible Android pre compilación de hacer con estilos y me preguntaba podría alguien explicar lo que lo causó. Lo arreglé, pero no sé cuál es el problema. No ayudó a Android diciendo que el error estaba en colors.xml y no en otro xml.

Paso 1: para recrear el error

Given a style <style name="ActionBarTitleContainer"> <item name="android:id">@id/title_container</item> <item name="android:layout_width">fill_parent</item> <item name="android:layout_height">@dimen/title_height</item> <item name="android:orientation">horizontal</item> <item name="android:background">@color/title_color_light</item> </style> 

Lo copié, le di nuevo, android: id

  <item name="android:id">@id/info_container</item> <style name="ActionBarTitleContainer"> <item name="android:id">@id/title_container</item> <item name="android:layout_width">fill_parent</item> <item name="android:layout_height">@dimen/title_height</item> <item name="android:orientation">horizontal</item> <item name="android:background">@color/title_color_light</item> </style> <style name="ActionBarInfoContainer"> <item name="android:id">@id/info_container</item> <item name="android:layout_width">fill_parent</item> <item name="android:layout_height">@dimen/info_height1</item> <item name="android:orientation">horizontal</item> <item name="android:background">@color/title_color_light</item> </style> 

Guardado y compile dicho error en id

 <style name="ActionBarInfoContainer"> <item name="android:id">@id/info_container</item> Description Resource Path Location Type error: Error: No resource found that matches the given name (at 'android:id' with value '@id/info_container'). styles.xml /MyApp/res/values line 68 Android AAPT Problem 

Así que por error añadí un + antes de que el ID

 <style name="ActionBarInfoContainer"> <item name="android:id">@+id/info_container</item> 

Entonces obtuvo el error

 W/ResourceType( 2202): Bad resource table: header size 0xc or total size 0x4aba is not on an integer boundary W/ResourceType( 2202): Bad resource table: header size 0xc or total size 0x4aba is not on an integer boundary ERROR: Unable to parse generated resources, aborting. 'aapt' error. Pre Compiler Build aborted. 

Por desgracia, había añadido un montón de estilo, etc, no sólo este pasado así que las edades de seguimiento para encontrar el error. No ayudado por Android diciendo que el error se produjo en colors.xml cuando no estaba.

Arreglado por

Quitando el + de styles.xml

Colocando nuevo id en ids.xml

  <style name="ActionBarTitleContainer"> <item name="android:id">@id/title_container</item> .... </style> <style name="ActionBarInfoContainer"> <item name="android:id">@id/info_container</item> .... </style> 

Cambiado @ + id / info_container a @ id / info_container

Y agregando id a ids.xml

 <resources> <item type="id" name="title_container" /> <item type="id" name="info_container" /> 

Cualquier idea de lo que el error significa, porque me tomó unas pocas horas de dolor para rastrearlo.

No ayudado por el compilador aapt de Android diciendo que el error fue causado alrededor de colors.xml.

¿Es este error causado por mi compilación contra 2.1U1?

Tengo el último SDK pero hay un aapt en cada carpeta de la plataforma pero la fecha contra ella es APR 2011.


Y para futuras referencias, ya que encontré muy poca información sobre la compilación de recursos aapt. Aquí hay algunos consejos para las personas con errores de recopilación de recursos, por lo que no pierde horas en malos informes de error de google:

CONSEJO 1 – ENCENDER VERBOSE ANDROID BUILD OUTPUT

 Open Eclipse Preferences Open in the list on the left Android Build Set Build output to Verbose Hit OK Open Console View Window > View > Console Do clean build or type a space in and file and hit save if you dont want to do full build Resources compiler aapt will run first and throw error 

Dos ediciones

Problema 1: error en rojo puede aparecer en la salida en una ubicación confusa

Probablemente causado por la excepción de ser lanzar en un hilo, pero otros archivos todavía compilar ok antes de que el proceso de construcción se detiene completamente.

Observe aquí cómo el error parece ocurrir después de next_bus_stops_layout.xml.

 [2011-05-15 16:22:25 - MyApp] (new resource id filechooser_file_view from /Users/user1/Documents/workspace/MyApp/res/layout/filechooser_file_view.xml) [2011-05-15 16:22:25 - MyApp] (new resource id listbusmapsactivity_layout from /Users/user1/Documents/workspace/MyApp/res/layout/listbusmapsactivity_layout.xml) [2011-05-15 16:22:25 - MyApp] (new resource id nearest_bus_maps_layout from /Users/user1/Documents/workspace/MyApp/res/layout/nearest_bus_maps_layout.xml) [2011-05-15 16:22:25 - MyApp] (new resource id nearest_bus_stops_layout from /Users/user1/Documents/workspace/MyApp/res/layout/nearest_bus_stops_layout.xml) [2011-05-15 16:22:25 - MyApp] W/ResourceType( 2247): Bad resource table: header size 0xc or total size 0x4aba is not on an integer boundary [2011-05-15 16:22:25 - MyApp] W/ResourceType( 2247): Bad resource table: header size 0xc or total size 0x4aba is not on an integer boundary [2011-05-15 16:22:25 - MyApp] ERROR: Unable to parse generated resources, aborting. [2011-05-15 16:22:25 - MyApp] (new resource id open_web_page_activity from /Users/user1/Documents/workspace/MyApp/res/layout/open_web_page_activity.xml) [2011-05-15 16:22:25 - MyApp] (new resource id send_email_activity from /Users/user1/Documents/workspace/MyApp/res/layout/send_email_activity.xml) [2011-05-15 16:22:25 - MyApp] 'aapt' error. Pre Compiler Build aborted. 

ESTE NO ES EL ARCHIVO DONDE ESTÁ EL ERROR.

SUGERENCIA: Cómo ENCONTRAR QUÉ FICHERO CAUSANDO EXACTAMENTE EL PROBLEMA

Busque el último archivo mencionado antes del mensaje de error:

 'aapt' error. Pre Compiler Build aborted. 

Esto es

 /send_email_activity.xml 

PROBLEMA: send_email_activity.xml no es el archivo con el error.

Send_email_activity.xml compilado ok y salió.

ES SU UNO DESPUÉS /send_email_activity.xml que queremos

Problema: nombre de archivo que arrojó el error que faltaba.

Cómo encontrar el archivo AFTER /send_email_activity.xml que causó el error

Desplácese hacia arriba en la salida de la consola hasta

 Files: 

El compilador aapt lista todos los archivos que encuentra y va a compilar.

Por suerte la orden en Archivos: es la misma que cuando el error es lanzado abajo

Busque el último archivo para compilar (send_email_activity.xml) en la sección Archivos:

 TIP In the Console window find the last file that compiled ok before the error 'send_email_activity.xml' And do CTRL/CMD(Mac) + F for previous occurrences under the Files: section 

Podemos ver aquí que /send_email_activity.xml es seguido por colors.xml

 Files: drawable/alphabet_bar_bg.xml Src: /Users/clearbrian/Documents/workspace/LondonBusStopMaps/res/drawable/alphabet_bar_bg.xml drawable/alphabet_separator_bg.xml Src: /Users/clearbrian/Documents/workspace/LondonBusStopMaps/res/drawable/alphabet_separator_bg.xml ....... layout/send_email_activity.xml Src: /Users/clearbrian/Documents/workspace/LondonBusStopMaps/res/layout/send_email_activity.xml values/colors.xml Src: /Users/clearbrian/Documents/workspace/LondonBusStopMaps/res/values/colors.xml ....... values/themes.xml Src: /Users/clearbrian/Documents/workspace/LondonBusStopMaps/res/values/themes.xml AndroidManifest.xml Src: /Users/clearbrian/Documents/workspace/LondonBusStopMaps/AndroidManifest.xml 

RESPUESTA: colors.xml ES EL ARCHIVO QUE CAUSÓ error 'aapt'. Pre Compiler Build abortado.

Y también el error:

 [2011-05-15 16:22:25 - MyApp] W/ResourceType( 2247): Bad resource table: header size 0xc or total size 0x4aba is not on an integer boundary [2011-05-15 16:22:25 - MyApp] W/ResourceType( 2247): Bad resource table: header size 0xc or total size 0x4aba is not on an integer boundary [2011-05-15 16:22:25 - MyApp] ERROR: Unable to parse generated resources, aborting. 

Problema 2: el error ISNT en colors.xml.

Había cambiado un valor de color en colors.xml

Pero se había hecho referencia en styles.xml

Styles.xml

  <style name="ActionBarInfoContainer"> <item name="android:id">@id/info_container</item> ... <item name="android:background">@color/title_color_light</item> </style> 

Por lo tanto, en el proceso de compilación probablemente intentó compilar styles.xml y luego vio @color y luego compiló colors.xml. O viceversa (pregúntele a Google) Por lo tanto, informó que el error estaba en colors.xml cuando en rápido era styles.xml / ids.xml

Y el posible error sólo se notó cuando vi la diferencia en id entre el

 <style name="ActionBarTitleContainer"> <item name="android:id">@id/title_container</item> ... </style> <style name="ActionBarInfoContainer"> <item name="android:id">@+id/info_container</item> ... </style> 

La línea

  <item name="android:id">@+id/info_container</item> 

Debe ser (no +)

  <item name="android:id">@id/info_container</item> 

E id debe estar en ids.xml

 <resources> <item type="id" name="title_container" /> <item type="id" name="info_container" /> 

XML … ¡las tarjetas de puntuación del nuevo milenio!

Me encontré con este problema al importar un proyecto de biblioteca (GreenDroid) y resultó ser el problema @ + id para mí también.

Lo que parece estar ocurriendo es que mientras no tengas un archivo ids.xml , el SDK de Android te permitirá declarar nuevos identificadores en styles.xml , pero en el momento en que el archivo existe deja de permitir este comportamiento. Desafortunadamente, no le dice que este es el problema y simplemente se bloquea con el error anotado en la publicación original:

  W / ResourceType (2247): Tabla de recursos no válidos: tamaño de encabezado 0xc o tamaño total 0x4aba no está en un límite de número entero

En esta página encontrará documentación sobre el significado de + . La página documenta los archivos XML de diseño, pero lo mismo se aplica a los estilos (sí, deberían poner esta información en un lugar mejor).

Para su conveniencia, aquí está la documentación relevante:

Para el valor ID, usualmente debe usar este formulario de sintaxis: "@ + id / name". El signo más, +, indica que se trata de un nuevo ID de recurso y la herramienta aapt creará un nuevo entero de recursos en la clase R.java, si aún no existe.

Sin embargo, si ya ha definido un recurso de ID (y no está ya utilizado), puede aplicar ese ID a un elemento Ver excluyendo el símbolo más en el valor de android: id.

  • ¿Por qué tengo espacio en blanco en la parte superior y en la parte inferior de mi ImageView en mi RelativeLayout?
  • Jerarquía de estilo en Android - ¿cuál es el orden de importancia?
  • Coloque los botones en la parte inferior de la pantalla con LinearLayout?
  • Android: Cómo evitar que el diseño se presione cuando se invoca el teclado
  • Error: (47) Error al analizar XML: prefijo no enlazado en la brecha telefónica de Android
  • Utilizar JAXB (xjc) clases generadas en android
  • No se puede resolver el símbolo @ integer / google_play_services_version para intellij
  • ¿Dónde están los esquemas de archivos XML en un proyecto de Android?
  • Forzar la siguiente palabra a una nueva línea si la palabra es demasiado larga para la vista de texto
  • Considere la posibilidad de agregar android: paddingStart = "25dp" para soportar mejor layouts de derecha a izquierda Error
  • ¿Cómo puedo definir el diseño de un fragmento desde XML?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.