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 recursos nuevos y otros alternativos de varias maneras, según el tipo de recurso 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 detalles para crear tipos de recursos específicos:

Si deseas obtener información para hacer referencia a los recursos del código de tu app, consulta Descripción general de recursos de la app.

Cómo agregar un archivo de recursos XML

Si bien los vínculos de páginas anteriores 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 de la vista Android o Project.

  2. Selecciona File > New > Android resource file.

    Figura 1: Diálogo New Resource File

  3. 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 lo edites 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 agregarlos seleccionando un calificador de la lista y haciendo clic en Add .
  4. 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 para el tipo de recurso que deseas agregar, 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.

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 elemento de diseño vectorial y un objeto de animación, y requiere al menos tres archivos XML.

En este ejemplo, puedes crear y conservar los tres archivos XML separados si necesitas reutilizar uno o más. Sin embargo, si los archivos XML 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 la 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:

  1. Haz clic en el módulo de la app de destino en la ventana Project.

  2. Selecciona File > New > Android resource directory.

    Figura 2: Diálogo New Resource Directory

  3. 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 el que quieras colocar el directorio.
    • Available qualifiers: En lugar de incluir calificadores de configuración de forma manual en el nombre de directorio, puedes agregarlos seleccionando un calificador de la lista y haciendo clic en Add .
  4. 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 combina. 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 orígenes de la variante de compilación
  • Bibliotecas de Android (AAR)

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 su nombre de archivo es único dentro del directorio resource type y del calificador de recursos (si se definió).

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 orígenes 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 esos orígenes, se genera un error y falla la combinación porque cada directorio de recursos tiene la misma prioridad.