Adicionar recursos de app

Os recursos do app, como bitmaps e layouts, são organizados em diretórios de tipo específico dentro do diretório res/ de cada módulo. Também é possível adicionar versões alternativas de cada arquivo que são otimizadas para diferentes configurações do dispositivo (como uma versão de alta resolução de um bitmap para telas de alta densidade).

O Android Studio ajuda você a adicionar recursos novos e alternativos de várias maneiras, dependendo do tipo de recurso que você quer adicionar. Esta página descreve como adicionar arquivos de recursos básicos, como mudar a localização dos recursos e como funciona a mescla de recursos.

Consulte as páginas abaixo para detalhes sobre como criar tipos de recursos específicos:

Para mais informações sobre como referenciar os recursos do código do app, consulte Visão geral dos recursos de app.

Adicionar um arquivo de recurso XML

Os links das páginas anteriores descrevem fluxos de trabalho personalizados para cada tipo de recurso, mas é possível adicionar qualquer arquivo de recurso XML seguindo estas etapas:

  1. Clique no módulo do app de destino na janela Project na visualização Android ou Project.

  2. Selecione File > New > Android Resource File.

    Figura 1. Caixa de diálogo New Resource File.

  3. Preencha as informações na caixa de diálogo:
    • File name: insira o nome do arquivo XML (não precisa do sufixo .xml).
    • Resource type: selecione o tipo de recurso que você quer criar.
    • Root element: se aplicável, selecione o elemento XML raiz do arquivo. Alguns tipos de recursos oferecem suporte a apenas um tipo de elemento raiz. Dependendo do tipo de recurso selecionado, pode não ser possível editar esse campo.
    • Source set: selecione o conjunto de origem em que você quer salvar o arquivo.
    • Directory name: o diretório precisa ser nomeado de uma maneira específica para os qualificadores de configuração e tipo de recurso. Não edite esse campo a menos que você queira adicionar qualificadores de configuração ao nome do diretório manualmente (use Available qualifiers).
    • Available qualifiers: em vez de incluir manualmente os qualificadores de configuração no nome do diretório, é possível adicioná-los selecionando um qualificador na lista e clicando em Add .
  4. Depois de adicionar todos os qualificadores desejados, clique em OK.

Dica: para abrir uma versão simplificada da caixa de diálogo New Resource File específica do tipo de recurso que você quer adicionar, clique com o botão direito do mouse em um diretório de recursos na pasta res e selecione New > type-name resource file.

Recursos XML inline complexos

Alguns recursos complexos exigem vários arquivos de recursos XML. Por exemplo, um drawable vetorial animado tem um objeto de drawable vetorial e um objeto de animação, o que requer pelo menos três arquivos XML.

Nesse exemplo, é possível criar e manter os três arquivos XML separados se você precisar reutilizar um ou mais deles. Porém, se os arquivos XML forem usados apenas para esse drawable vetorial animado, você poderá usar o formato de recurso inline fornecido na Android Asset Packaging Tool (AAPT). Com a AAPT, você pode definir todos os três recursos em um único arquivo XML. Para mais informações, consulte Recursos XML inline complexos.

Adicionar um diretório de recursos

Para adicionar um novo diretório de recursos, siga estas etapas:

  1. Clique no módulo do app de destino na janela Project.

  2. Selecione File > New > Android resource directory.

    Figura 2. Caixa de diálogo New Resource Directory.

  3. Preencha as informações na caixa de diálogo:
    • Directory name: o diretório precisa ser nomeado de uma maneira específica para a combinação de qualificadores de configuração e tipo de recurso. Não edite esse campo a menos que você queira adicionar qualificadores de configuração ao nome do diretório manualmente (use Available qualifiers).
    • Resource type: selecione o tipo de recurso que você quer que o diretório contenha.
    • Source set: selecione o conjunto de origem onde você quer o diretório.
    • Available qualifiers: em vez de incluir manualmente os qualificadores de configuração no nome do diretório, é possível adicioná-los selecionando um qualificador na lista e clicando em Add .
  4. Depois de adicionar todos os qualificadores desejados, clique em OK.

Alterar seu diretório de recursos

Por padrão, seus recursos ficam localizados em module-name/src/source-set-name/res/. Por exemplo, os recursos do conjunto de origem principal do seu módulo ficam em src/main/res/ e os recursos do conjunto de origem de depuração ficam em src/debug/res/.

No entanto, você pode mudar esses caminhos para qualquer outro local (relativo ao arquivo build.gradle) com a propriedade res.srcDirs no bloco sourceSets. Exemplo:

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")
        }
    }
}

Também é possível especificar vários diretórios de recursos para um conjunto de origem e, então, as ferramentas de build serão mescladas. Exemplo:

Groovy

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

Kotlin

android {
    sourceSets {
        main {
            res.srcDirs("res1", "res2")
        }
    }
}

Para ver mais informações, leia sobre conjuntos de origem.

Mescla de recursos

Os recursos no arquivo final do app podem vir de três origens:

  • O conjunto de origem principal (geralmente localizado em src/main/res/)
  • Conjuntos de origem de variantes de build
  • Bibliotecas do Android (AARs)

Quando todos os recursos de cada conjunto de origem ou biblioteca são exclusivos, todos eles são adicionados ao app final. Um recurso será considerado exclusivo se o nome de arquivo for exclusivo no diretório do tipo de recurso e no qualificador do recurso (se definido).

Se houver duas ou mais versões do mesmo recurso com nomes iguais, somente uma será incluída no app final. As ferramentas de build selecionam qual versão manter com base na seguinte ordem de prioridade (a mais alta à esquerda):

variante de build > tipo de build > variação de produto > conjunto de origem principal > dependências de biblioteca

Por exemplo, se o conjunto de origem principal contiver:

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

E o tipo de build de depuração contiver:

  • res/layout/example.xml

Então, o app final incluirá res/layout/example.xml do tipo de build de depuração e res/layout-land/example.xml do conjunto de origem principal.

No entanto, caso sua configuração de build especifique várias pastas de recursos para um determinado conjunto de origem e conflitos existam entre essas origens, vai ocorrer um erro e a mesclagem vai falhar, porque todos os diretórios de recursos têm a mesma prioridade.