Configurar o módulo do app

Nesta página você encontra configurações úteis de apps no arquivo build.gradle do módulo. Além de fornecer uma visão geral das propriedades importantes definidas no arquivo build.gradle, saiba como:

  • mudar o ID do aplicativo para diferentes configurações do build;
  • ajustar com segurança o namespace de forma independente do ID do aplicativo.

Definir o ID do aplicativo

Todo app Android tem um ID do aplicativo exclusivo que se parece com um nome de pacote Java ou Kotlin, como com.example.myapp. Esse ID identifica o app de modo exclusivo no dispositivo e na Google Play Store.

O ID do aplicativo é definido pela propriedade applicationId no arquivo build.gradle do módulo, como mostrado abaixo:

Groovy

android {
    defaultConfig {
        applicationId "com.example.myapp"
        minSdkVersion 15
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"
    }
    ...
}

Kotlin

android {
    defaultConfig {
        applicationId = "com.example.myapp"
        minSdk = 15
        targetSdk = 24
        versionCode = 1
        versionName = "1.0"
    }
    ...
}

Embora o ID do aplicativo pareça um nome de pacote Java ou Kotlin tradicional, as regras de nomenclatura para ele são um pouco mais restritivas:

  • Ele precisa ter pelo menos dois segmentos (um ou mais pontos).
  • Cada segmento precisa começar com uma letra.
  • Todos os caracteres precisam ser alfanuméricos ou um sublinhado [a-zA-Z0-9_].

Quando você cria um novo projeto no Android Studio, o applicationId é atribuído automaticamente ao nome do pacote que você escolheu durante a configuração. Tecnicamente, é possível ativar/desativar as duas propriedades de maneira independente, mas isso não é recomendado.

Recomendamos que você faça o seguinte ao definir o ID do aplicativo:

  • Mantenha o ID do aplicativo igual ao namespace. A diferenciação entre as duas propriedades pode ser um pouco confusa, mas se elas forem iguais, você não vai precisar se preocupar.
  • Não mude o ID do aplicativo depois da publicação. Se você mudar, a Google Play Store tratará o upload seguinte como um novo app.
  • Defina explicitamente o ID do aplicativo. Se isso não for feito usando a propriedade applicationId, o ID do aplicativo vai assumir automaticamente o mesmo valor do namespace. Isso significa que a mudança do namespace vai mudar o ID do aplicativo, o que costuma ser indesejado.

Cuidado: se você estiver usando uma WebView, considere usar o nome do pacote como um prefixo no ID do aplicativo, ou poderá encontrar dificuldades, conforme descrito no problema 211768.

Mudar o ID do aplicativo para testes

Por padrão, as ferramentas de compilação aplicam um ID do aplicativo ao seu APK de teste de instrumentação usando o ID do aplicativo para a variante de build em questão, que contém .test no nome. Por exemplo, um APK de teste da variante de compilação com.example.myapp.free tem com.example.myapp.free.test como ID do aplicativo.

Embora não seja necessário, você pode mudar o ID do aplicativo definindo a propriedade testApplicationId no bloco defaultConfig ou productFlavor.

Definir o namespace

Cada módulo do Android tem um namespace, que é usado como nome do pacote Java ou Kotlin das classes R e BuildConfig geradas.

O namespace é definido pela propriedade namespace no arquivo build.gradle do módulo, conforme mostrado no snippet de código a seguir. O namespace é definido inicialmente como o nome do pacote que você escolhe ao criar seu projeto.

android {
    namespace 'com.example.myapp'
    ...
}

Ao criar o app no pacote de apps (APK) final, as ferramentas de build do Android usam o namespace como a classe R gerada, usada para acessar os recursos do app. Por exemplo, no arquivo de build anterior, a classe R é criada em com.example.myapp.R.

O nome definido para a propriedade namespace do arquivo build.gradle precisa sempre corresponder ao nome do pacote básico do seu projeto, em que você mantém as atividades e outros códigos do app. Você pode ter outros subpacotes no projeto, mas esses arquivos precisam importar a classe R usando o namespace da propriedade namespace.

Para um fluxo de trabalho mais simples, mantenha o namespace igual ao ID do seu aplicativo, assim como eles são por padrão.

Mudar o namespace

Na maioria dos casos, você precisa manter o namespace e o ID do aplicativo iguais, por padrão. No entanto, talvez seja necessário mudar o namespace em algum momento se você estiver reorganizando seu código ou para evitar conflitos de namespace.

Nesses casos, mude o namespace atualizando a propriedade namespace no arquivo build.gradle do módulo, independentemente do ID do aplicativo. Antes de fazer isso, confira se o ID do aplicativo está definido explicitamente. Assim, a mudança do namespace não vai mudar o ID do aplicativo. Para mais informações sobre como o namespace pode afetar o ID do aplicativo, consulte Definir o ID do aplicativo.

Se você tem nomes diferentes para as propriedades namespace e applicationId do Gradle, as ferramentas de build copiam o ID do aplicativo para o arquivo de manifesto final do app quando a criação termina. Portanto, se você inspecionar o arquivo AndroidManifest.xml após uma criação, o atributo package vai ser definido como o ID do aplicativo. O atributo package do manifesto integrado é o local que a Google Play Store e a Plataforma Android consultam para identificar seu app.

Mudar o namespace para testes

O namespace padrão dos conjuntos de origem androidTest e test é o namespace principal, com .test adicionado ao fim. Por exemplo, se a propriedade namespace do arquivo build.gradle for com.example.myapp, o namespace para testes será definido como com.example.myapp.test por padrão. Para mudar o namespace para testes, use a propriedade testNamespace, conforme mostrado no snippet de código a seguir:

android {
    namespace 'com.example.myapp'
    testNamespace 'com.example.mytestapp'
    ...
}

Cuidado: não defina testNamespace e namespace com o mesmo valor. Caso contrário, vão ocorrer conflitos de namespace.

Para saber mais sobre testes, consulte Testar apps no Android.