Android Dev Summit, October 23-24: two days of technical content, directly from the Android team. Sign-up for livestream updates.

Cómo agregar recursos de la app

Los recursos de la app, como mapas de bits y diseños, se organizan en directorios específicos de tipo dentro del directorio res/ de cada módulo. También puedes agregar versiones alternativas de cada archivo que estén optimizadas para diferentes configuraciones de dispositivos (como una versión de alta resolución de un mapa de bits para pantallas de alta densidad).

Android Studio te ayuda a agregar nuevos recursos y otros alternativos de varias maneras, según el tipo de elemento que quieras agregar. En esta página, se describe cómo agregar archivos de recursos básicos, cómo cambiar la ubicación de los recursos y cómo funciona la combinación de recursos.

Puedes consultar también las siguientes páginas para obtener información acerca de cómo crear tipos de recursos específicos:

Para obtener información sobre cómo hacer referencia a los recursos del código de tu app, consulta Cómo proporcionar recursos.

Cómo agregar un archivo de recursos XML

Aunque las páginas vinculadas anteriormente describen flujos de trabajo personalizados para cada tipo de recurso, puedes agregar cualquier archivo de recursos XML siguiendo estos pasos:

  1. Haz clic en el módulo de la app de destino en la ventana Project (en la vista Android o Project) y, a continuación, selecciona File > New > Android resource file.

  2. Completa los detalles en el diálogo:
    • File name: Escribe el nombre del archivo XML (no requiere el sufijo .xml).
    • Resource type: Selecciona el tipo de recurso que quieres crear.
    • Root element: Si corresponde, selecciona el elemento XML raíz del archivo. Algunos tipos de recursos solo admiten un tipo de elemento raíz, por lo que, según el tipo seleccionado anteriormente, es posible que no se pueda editar esta opción.
    • Source set: Selecciona el conjunto de fuentes en el que quieras guardar el archivo.
    • Directory name: El directorio debe tener un nombre específico según el tipo de recurso y los calificadores de configuración. Por lo tanto, no debes editar esto a menos que quieras agregar manualmente calificadores de configuración al nombre del directorio (consulta Calificadores disponibles).
    • Available qualifiers: En lugar de escribir los calificadores de configuración para el directorio de diseño, puedes agregarlos haciendo clic en un calificador de la lista de la izquierda y, luego, en Add .
  3. Una vez que hayas agregado todos los calificadores que quieras, haz clic en OK.

Sugerencia: Haz clic con el botón derecho de un directorio de recursos existente dentro de la carpeta res y selecciona New > type-name resource file. Esto abrirá una versión simplificada del diálogo New Resource File específica para el tipo de recurso deseado.

Sugerencia: Algunos recursos complejos requieren varios archivos de recursos XML. Por ejemplo, un elemento de diseño de vector animado tiene un objeto de diseño de vector y un objeto de animación, que requiere al menos tres archivos XML. Puedes conservar los tres archivos XML separados si necesitas reutilizar uno o más de ellos. Sin embargo, si los archivos XML se utilizan únicamente para este elemento de diseño de vector animado, puedes usar en su lugar el formato de recursos intercalados que se proporciona en Android Asset Packaging Tool (AAPT). Con AAPT, puedes definir los tres recursos en un archivo XML. Para obtener más información, consulta Recursos XML complejos intercalados.

Cómo agregar un directorio de recursos

Si necesitas agregar un nuevo directorio de recursos, sigue estos pasos:

  1. Haz clic en el módulo de la app de destino, en la ventana Project, y luego selecciona File > New > Android resource directory.

  2. Completa los detalles en el diálogo:
    • Directory name: El directorio debe tener un nombre específico según el tipo de recurso y la combinación de calificadores de configuración. Por lo tanto, no debes editar esto a menos que quieras agregar manualmente calificadores de configuración al nombre del directorio (en su lugar, usa Calificadores disponibles).
    • Resource type: Selecciona el tipo de recurso que quieras crear.
    • Source set: Selecciona el conjunto de fuentes en las que quieras el diseño.
    • Available qualifiers: En lugar de escribir los calificadores de configuración correspondientes al directorio de diseño, puedes agregarlos haciendo clic en un calificador de la lista de la izquierda y, luego, en Add .
  3. Una vez que hayas agregado todos los calificadores que quieras, haz clic en OK.

Cómo cambiar el directorio de recursos

De forma predeterminada, tus recursos se encuentran en module-name/src/source-set-name/res/. Por ejemplo, los recursos para el conjunto principal de fuentes del módulo están en src/main/res/ y los recursos del conjunto de fuentes de depuración están en src/debug/res/.

Sin embargo, puedes cambiar estas rutas a cualquier otra ubicación (relativa al archivo build.gradle) con la propiedad res.srcDirs en el bloque sourceSets {}. Por ejemplo:

android {
        sourceSets {
            main {
                res.srcDirs = ['resources/main']
            }
            debug {
                res.srcDirs = ['resources/debug']
            }
        }
    }
    

También puedes especificar varios directorios de recursos para un conjunto de fuentes, y luego las herramientas de compilación los fusionarán. Por ejemplo:

android {
        sourceSets {
            main {
                res.srcDirs = ['res1', 'res2']
            }
        }
    }
    

Para obtener más información, lee sobre los conjuntos de fuentes.

Combinación de recursos

Los recursos del archivo APK final pueden provenir de tres fuentes diferentes:

Si todos los recursos de cada conjunto de fuentes o biblioteca son únicos, se agregan todos al APK final. Un recurso se considera único si no hay ningún otro elemento que tenga su nombre de archivo dentro del directorio de tipo de recurso ydel calificador de recursos (si está definido).

Si existen dos o más versiones coincidentes del mismo recurso, solo se incluye una versión en el APK final. Las herramientas de compilación seleccionan qué versión se conservará según el siguiente orden de prioridades (prioridad más alta a la izquierda):

variante de compilación > tipo de compilación > tipo de producto > conjunto principal de fuentes > dependencias de biblioteca

Por ejemplo, si el conjunto principal de fuentes contiene:

  • res/layout/foo.xml
  • res/layout-land/foo.xml

Y el tipo de compilación de depuración contiene:

  • res/layout/foo.xml

Entonces, el APK final incluye res/layout/foo.xml del tipo de compilación de depuración y res/layout-land/foo.xml del conjunto principal de fuentes.

Sin embargo, si la configuración de compilación especifica varias carpetas de recursos para un conjunto de fuentes determinado y hay conflictos entre ellas, se genera un error y falla la combinación porque cada directorio de recursos tiene la misma prioridad.