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:
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.
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 Kotlin ou Java
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.
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
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:
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.