Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


¿Qué significa EXACTAMENTE los recursos $ NotFoundException?

Hace poco posteé un error de Resources $ NotFoundException aquí y recibí las sugerencias genéricas usuales acerca de eliminar la carpeta "gen", hacer una limpieza, hacer una actualización, etc, etc. Hay cientos (miles?) De otros programadores recibiendo la misma excepción y Obteniendo las mismas sugerencias por todo SO y la web. Pero no puedo encontrar ningún lugar donde alguien describe lo que realmente significa ese error.

La documentación es vaga: http://developer.android.com/reference/android/content/res/Resources.NotFoundException.html

  • Android Dividir el círculo en N partes iguales y conocer las coordenadas de cada punto de división
  • Iniciar sesión con google para android no funciona en la versión apk
  • Obtener UUIDs de G-Shock reloj bluetooth android
  • API de huellas dactilares para el teléfono Android
  • Añadir un filtro de color a un Drawable cambia todos los botones usando el mismo Drawable
  • Android - Simular el botón Atrás
  • Recursos $ NotFoundException es un error de ejecución, así que presumiblemente está buscando algo en el archivo APK.

    1. ¿Cómo se integran los recursos en el archivo APK en tiempo de construcción? Comenzamos con el archivo XML y luego qué …?
    2. ¿Cómo se hace referencia en tiempo de ejecución?
    3. ¿Cuál es la relación entre el ID de recurso que veo en el depurador y cómo se identifica en el archivo APK?
    4. ¿Qué herramientas (Windows) puedo usar para examinar un archivo APK para encontrar estos recursos yo mismo?

    Gracias de antemano por las respuestas a cualquiera de estas preguntas!

    PS – si crees que tienes una respuesta al bug original, publícalo allí y no a este hilo; Esta es una pregunta diferente.

  • Efectos de color PorterDuff en android para vistas bajo una vista determinada
  • Android: Cómo obtener valores de fuerza de señal 3G / UMTS
  • Uso de las actividades de los proyectos de la biblioteca
  • NewSpellCheckerSession devuelve siempre null
  • SDK ubicación no encontrada. Defina la ubicación con sdk.dir en el archivo local.properties o con una variable de entorno ANDROID_HOME
  • Procesamiento de fragmentos Google Map V2 de Google Studio
  • 2 Solutions collect form web for “¿Qué significa EXACTAMENTE los recursos $ NotFoundException?”

    1. Los recursos se pueden empaquetar de varias maneras, desde activos sin procesar hasta imágenes optimizadas a datos de bytes empaquetados. Todo comprimido en un apk. Id de un recurso es lo que ayuda a encontrar de nuevo. Durante el desarrollo, la herramienta de compilación ( aapt ) explora continuamente directorio res para xml, imágenes etc y genera constantes numéricas en R.java . Lea un detalle sobre el proceso de construcción de android .

    2. En tiempo de ejecución, la instancia Resources decide dónde buscar, dependiendo de si se llama a su método get. El id numérico ayuda a consultar la asignación de recursos y encontrar la correcta. La carga de datos real es manejada por código nativo de bajo nivel.

    3. Depurador puede mostrar objetos y sus campos. Para averiguar qué falta leer el mensaje de error NotFoundException rastrea en logcat. Enumera el valor hexadecimal de id de recurso.

    4. ApkTool le permite desinflar un archivo apk y reconstruir el directorio res .

    Actualizar:

    ¿Cómo se empaquetan los recursos:

    Si tiene un apk y desea ver la tabla de recursos completa ejecute la herramienta aapt en SDK como:

      aapt list -v myApp.apk 

    Se mostrarán detalles como:

     Archive: ./myApp.apk Length Method Size Ratio Offset Date Time CRC-32 Name -------- ------ ------- ----- ------- ---- ---- ------ ---- 468 Deflate 228 51% 0 11-07-12 23:25 29fb0660 res/color/abs__primary_text_disable_only_holo_dark.xml 468 Deflate 228 51% 332 11-07-12 23:25 bae4791a res/color/abs__primary_text_disable_only_holo_light.xml 2942 Stored 2942 0% 280417 10-27-12 16:52 9b5af43b res/drawable-xhdpi/ic_mus.png 2330 Stored 2330 0% 283418 10-27-12 16:52 21f5ba4d res/drawable-xhdpi/ic_pic.png 1556 Stored 1556 0% 285810 10-27-12 16:52 31c3402b res/drawable-xhdpi/ic_vid.png 

    Verá el método (desinflado, almacenado, etc.) y el desplazamiento en datos binarios donde se almacena un recurso, y la longitud, que indica cuántos bytes leer después de la compensación para obtener ese recurso.

    Qué es lo que Resources.NotFoundException imprime:

    Aquí está el código que lo genera:

     public void getValue(int id, TypedValue outValue, boolean resolveRefs) throws NotFoundException { boolean found = mAssets.getResourceValue(id, 0, outValue, resolveRefs); if (found) { return; } throw new NotFoundException("Resource ID #0x" + Integer.toHexString(id)); } 

    Por lo tanto, imprime valor hexadecimal del Id que la instancia Resources se solicita para cargar.

    Aquí hay una parte de R.java :

     public static int absForceOverflow=0x7f010039; 

    Puede ver Id se le asigna valores hexagonales similares.

    ¿Puedo solucionar este error?

    El error no debería haber ocurrido en el primer lugar si compiló las herramientas compiladas usted proyecto con éxito. No hay mucho que puedas hacer excepto limpiar o reconstruir el proyecto. Esto representa un error en las herramientas de compilación o en el cargador de recursos.

    1. ¿Cómo se integran los recursos en el archivo APK en tiempo de construcción? Comenzamos con el archivo XML y luego qué …?

    Cada vez que utilice @+id/ en su XML o coloque un elemento en strings.xml o su carpeta dibujable, el compilador convertirá todos los recursos de la carpeta / res a un valor entero que se colocará en R.java .

     2. How are they referenced at runtime? 

    Los recursos son referenciados por valores enteros que se buscan en R.java

    3. ¿Cuál es la relación entre el ID de recurso que veo en el depurador y cómo se identifica en el archivo APK?

    Desde mi entendimiento la relación es la que se desarrolla de nuevo en R.java .

    4. ¿Qué herramientas (Windows) puedo utilizar para examinar un archivo APK para encontrar estos recursos yo mismo?

    No es seguro…

    Esto es todo lo que recogí de mi entendimiento. Si hay alguna declaración falsa aquí, por favor avíseme.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.