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.
Consulta las siguientes páginas para obtener información sobre cómo crear tipos de recursos específicos:
- Para agregar archivos de diseño, consulta Cómo compilar una IU con un editor de diseño.
- Para agregar archivos de string, consulta Cómo localizar la IU con Translations Editor.
- Para agregar mapas de bits, consulta Cómo crear íconos de apps con Image Asset Studio.
- Para agregar archivos SVG, consulta Cómo agregar gráficos vectoriales de varias densidades.
Si deseas obtener información para hacer referencia a los recursos del código de la app, consulta Descripción general de los recursos de la app.
Cómo agregar un archivo de recursos XML
Aunque los vínculos de página anteriores describen flujos de trabajo personalizados para cada tipo de recurso, puedes agregar cualquier archivo de recursos XML siguiendo estos pasos:
Haz clic en el módulo de la app de destino, en la ventana Project de la vista de Android o Project.
- Selecciona File > New > Android resource file.
Figura 1: Diálogo New Resource File
- Completa los detalles en el diálogo:
- File name: Ingresa el nombre del archivo en formato XML (esto no requiere el sufijo
.xml
). - Resource type: Selecciona el tipo de recurso que quieras 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. Según el tipo de recurso seleccionado, es posible que no se pueda editar esta opción.
- Source set: Selecciona el conjunto de orígenes 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. No edites esto a menos que quieras agregar manualmente calificadores de configuración al nombre del directorio (consulta Available qualifiers).
- Available qualifiers: En lugar de incluir calificadores de configuración de forma manual en el nombre de directorio, puedes seleccionar un calificador de la lista y hacer clic en Add
para agregarlo.
- File name: Ingresa el nombre del archivo en formato XML (esto no requiere el sufijo
- Una vez que hayas agregado todos los calificadores que quieras, haz clic en OK.
Sugerencia: Para abrir una versión simplificada del diálogo New Resource File específica del tipo de recurso que deseas agregar, haz clic con el botón derecho en un recurso existente de la carpeta res y selecciona New > type-name resource file.
Recursos XML intercalados complejos
Algunos recursos complejos requieren varios archivos de recursos XML. Por ejemplo, un elemento de diseño vectorial animado tiene un objeto de diseño vectorial y un objeto de animación, lo que requiere al menos tres archivos en formato XML.
En este ejemplo, puedes crear y conservar los tres archivos en formato XML separados si necesitas reutilizar uno o más. Sin embargo, si se utilizan únicamente para este elemento de diseño vectorial 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 en formato XML. Para obtener más información, consulta Recursos XML complejos intercalados.
Cómo agregar un directorio de recursos
Para agregar un nuevo directorio de recursos, sigue estos pasos:
Haz clic en el módulo de la app de destino en la ventana Project.
- Selecciona File > New > Android resource directory.
Figura 2: Diálogo New Resource Directory
- 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. No lo edites a menos que quieras agregar manualmente calificadores de configuración al nombre del directorio (consulta Available qualifiers).
- Resource type: Selecciona el tipo de recurso que quieres que contenga el directorio.
- Source set: Selecciona el conjunto de orígenes en los que quieras el directorio.
- Available qualifiers: En lugar de incluir calificadores de configuración de forma manual en el nombre de directorio, puedes seleccionar un calificador de la lista y hacer clic en Add
para agregarlo.
- 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:
Groovy
android { sourceSets { main { res.srcDirs = ['resources/main'] } debug { res.srcDirs = ['resources/debug'] } } }
Kotlin
android { sourceSets { getByName("main") { res.srcDirs("resources/main") } getByName("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 fusionan. Por ejemplo:
Groovy
android { sourceSets { main { res.srcDirs = ['res1', 'res2'] } } }
Kotlin
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 de app final pueden provenir de tres orígenes:
- El conjunto principal de orígenes (en general, ubicado en
src/main/res/
) - Conjuntos de fuentes de la variante de compilación
- Bibliotecas de Android (AARs)
Si todos los recursos de cada conjunto de orígenes o biblioteca son únicos, se agregan todos a la app 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 recursos 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 la app final. Las herramientas de compilación seleccionan qué versión se conservará según el siguiente orden de prioridad (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/example.xml
res/layout-land/example.xml
Y el tipo de compilación de depuración contiene:
res/layout/example.xml
Entonces, la app final incluye res/layout/example.xml
del tipo de compilación de depuración y res/layout-land/example.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.