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.