En esta página, se describe la configuración útil de la app en el archivo build.gradle.kts
a nivel del módulo. Además de brindar una descripción general de las propiedades importantes configuradas en el archivo build.gradle.kts
, aprende a hacer lo siguiente:
- Cambiar el ID de aplicación para diferentes configuraciones de compilación.
- Ajustar el espacio de nombres de forma segura, independientemente del ID de aplicación
Cómo establecer el ID de aplicación
Cada app para Android tiene un ID de aplicación exclusivo similar a un nombre de paquete de Java o Kotlin (por ejemplo, com.example.miapp). Este ID permite identificar de manera exclusiva tu app en el dispositivo y en Google Play Store.
El ID de aplicación se define con la propiedad applicationId
en el archivo build.gradle.kts
de tu módulo, como se muestra a continuación. Para actualizar el valor de applicationId
, reemplaza com.example.myapp
por el ID de tu 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" } ... }
Aunque el ID de aplicación es similar a un nombre de paquete de Kotlin o Java tradicional, las reglas de nomenclatura para el ID de aplicación son un poco más restrictivas:
- Debe tener al menos dos segmentos (uno o más puntos).
- Cada segmento debe comenzar con una letra.
- Todos los caracteres deben ser alfanuméricos o debe incluirse un guión bajo [a-zA-Z0-9_].
Cuando creas un proyecto nuevo en Android Studio, se le asigna automáticamente a applicationId
el nombre de paquete que elegiste durante la configuración. Técnicamente, puedes activar o desactivar las dos propiedades de forma independiente a partir de ese punto, pero no se recomienda.
Se recomienda que hagas lo siguiente cuando configures el ID de aplicación:
- Mantén el ID de aplicación igual que el espacio de nombres. La distinción entre las dos propiedades puede ser un poco confusa, pero si las mantienes iguales, no tendrás que preocuparte.
- No cambies el ID de aplicación luego de publicarla. Si lo haces, Google Play Store considera la siguiente carga como una app nueva.
- Define de manera explícita el ID de aplicación. Si el ID de aplicación no se define de forma explícita con la propiedad
applicationId
, esta toma automáticamente el mismo valor que el espacio de nombres. Esto significa que cambiar el espacio de nombres cambia el ID de aplicación, que no suele ser lo que quieres.
Cómo cambiar el ID de aplicación para realizar pruebas
De manera predeterminada, las herramientas de compilación aplican el ID de aplicación a tu APK de prueba de instrumentación usando el ID de aplicación para la variante de compilación específica y agregándole el elemento .test
. Por ejemplo, un APK de prueba para la variante de compilación com.example.myapp.free
tiene el ID de aplicación com.example.myapp.free.test
.
Si bien no será necesario, podrás cambiar el ID de aplicación definiendo la propiedad testApplicationId
en el bloque defaultConfig
o productFlavor
.
Cómo configurar el espacio de nombres
Cada módulo de Android tiene un espacio de nombres que se usa como nombre de paquete de Kotlin o Java para las clases R
y BuildConfig
que se generan.
El espacio de nombres se define con la propiedad namespace
en el archivo build.gradle.kts
de tu módulo, como se muestra en el siguiente fragmento de código. En un principio, namespace
se configura con el nombre de paquete que eliges cuando creas el proyecto.
Kotlin
android { namespace = "com.example.myapp" ... }
Groovy
android { namespace "com.example.myapp" ... }
Mientras compilas tu app en el paquete de aplicación (APK) final, las herramientas de compilación de Android usan el espacio de nombres en la clase R
generada en la app (que se usa para acceder a los recursos de la app).
Por ejemplo, en el archivo de compilación anterior, se crea la clase R
en com.example.myapp.R
.
El nombre que configures para la propiedad namespace
del archivo build.gradle.kts
siempre debe coincidir con el nombre de paquete base del proyecto en el que conservas tus actividades y otros tipos de código de la app. Puedes tener otros subpaquetes en tu proyecto, pero esos archivos deben importar la clase R
usando el espacio de nombres de la propiedad namespace
.
Para que el flujo de trabajo sea más simple, mantén el espacio de nombres igual que el ID de aplicación, como se encuentran en la configuración predeterminada.
Cómo cambiar el espacio de nombres
En la mayoría de los casos, debes mantener el espacio de nombres y el ID de aplicación iguales, ya que son los valores predeterminados. Sin embargo, es posible que debas cambiar el espacio de nombres en algún momento si reorganizas tu código o para evitar colisiones de espacios de nombres.
En estos casos, cambia el espacio de nombres actualizando la propiedad namespace
en el archivo build.gradle.kts
de tu módulo, independientemente del ID de aplicación. Antes de hacerlo, asegúrate de que el ID de aplicación se defina de forma explícita, de modo que el cambio de espacio de nombres no modifique el ID de aplicación. Para más información sobre el modo en que el espacio de nombres puede afectar el ID de aplicación, consulta Cómo configurar el ID de aplicación.
Si tienes nombres diferentes para namespace
y applicationId
de Gradle, las herramientas de compilación copian el ID de aplicación en el archivo de manifiesto final de tu app al finalizar la compilación.
Por lo tanto, si inspeccionas tu archivo AndroidManifest.xml
después de una compilación, el atributo package
se establece como el ID de aplicación. El atributo package
del manifiesto combinado es donde Google Play Store y la plataforma de Android inspeccionan para identificar tu app.
Cómo cambiar el espacio de nombres para realizar pruebas
El espacio de nombres predeterminado para los conjuntos de orígenes androidTest
y test
es el espacio de nombres principal, con .test
agregado al final. Por ejemplo, si la propiedad namespace
del archivo build.gradle
es com.example.myapp
, el espacio de nombres de prueba se establece de forma predeterminada en com.example.myapp.test
.
Si deseas cambiar el espacio de nombres para realizar pruebas, usa la propiedad testNamespace
, como se muestra en el siguiente fragmento de código:
Kotlin
android { namespace = "com.example.myapp" testNamespace = "com.example.mytestapp" ... }
Groovy
android { namespace "com.example.myapp" testNamespace "com.example.mytestapp" ... }
Precaución: No configures testNamespace
y namespace
con el mismo valor. Si lo haces, se producirán colisiones de espacios de nombres.
Para más información sobre las pruebas, consulta Cómo probar apps en Android.