Cómo configurar el módulo de la app

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.