Esta página descreve configurações úteis de apps no módulo build.gradle.kts . Além de fornecer uma visão geral das propriedades importantes definidas no build.gradle.kts, aprenda a fazer o seguinte:
- 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 na classe build.gradle.kts, conforme mostrado aqui. Atualize o valor do applicationId. substituindo com.example.myapp pelo seu 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 do com.example.myapp.free variante de build 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 escolhido ao crie 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 o A propriedade namespace no arquivo build.gradle está com.example.myapp, o namespace "testing" é definido por padrão como com.example.myapp.test. 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.