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 a fin de obtener información para crear tipos de recursos específicos:

Si quieres obtener información para 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 correspondientes al directorio del 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 en 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, una interfaz animada dibujable en vector tiene un objeto de interfaz dibujable en vector y un objeto de animación, lo que requiere al menos tres archivos en formato XML. Puedes conservar esos tres archivos separados si necesitas reutilizar uno o más de ellos. Sin embargo, si se utilizan únicamente para esta interfaz animada dibujable en vector, 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 en formato 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 (consulta 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 del 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 un 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 orígenes del módulo están en src/main/res/, y los recursos del conjunto de orígenes de depuración están en src/debug/res/.

Sin embargo, puedes cambiar estas rutas de acceso 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 orígenes, 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 orígenes.

Combinación de recursos

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

Si todos los recursos de cada conjunto de orígenes 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 y del 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):

build variant > build type > product flavor > main source set > library dependencies

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 orígenes.

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