Configurar o módulo do app

Esta página descreve configurações úteis de apps no arquivo build.gradle.kts do módulo. Além de fornecer uma visão geral das propriedades importantes definidas no arquivo build.gradle.kts, aprenda a:

  • 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.kts do módulo, conforme mostrado aqui. Atualize o valor de applicationId substituindo com.example.myapp pelo ID do app:

Kotlin

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

Groovy

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

Embora o ID do aplicativo pareça um nome de pacote Kotlin ou Java 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.

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 build com.example.myapp.free tem o ID do aplicativo com.example.myapp.free.test.

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 Kotlin ou Java das classes R e BuildConfig geradas.

O namespace é definido pela propriedade namespace no arquivo build.gradle.kts 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.

Kotlin

android {
    namespace = "com.example.myapp"
    ...
}

Groovy

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.kts 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.kts 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 no arquivo build.gradle for com.example.myapp, o namespace de teste 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:

Kotlin

android {
    namespace = "com.example.myapp"
    testNamespace = "com.example.mytestapp"
    ...
}

Groovy

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.