Cómo configurar el módulo de la app

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

En esta página se describen configuraciones útiles de la app en el archivo build.gradle a nivel de módulo. Además de brindar una descripción general de las propiedades importantes configuradas en el archivo build.gradle, 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 de tu módulo, como se muestra aquí:

Groovy

android {
    defaultConfig {
        applicationId "com.example.myapp"
        minSdkVersion 15
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"
    }
    ...
}

Kotlin

android {
    defaultConfig {
        applicationId = "com.example.myapp"
        minSdk = 15
        targetSdk = 24
        versionCode = 1
        versionName = "1.0"
    }
    ...
}

Aunque el ID de aplicación es similar a un nombre de paquete de Java o Kotlin 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 guion 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 cambias, 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 mediante la propiedad applicationId, 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.

Precaución: Si usas el objeto WebView, procura utilizar el nombre de tu paquete como prefijo del ID de aplicación. De lo contrario, es posible que se generen problemas, como se describe en el error 211768.

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 Java o Kotlin para las clases R y BuildConfig que se generan.

El espacio de nombres se define con la propiedad namespace en el archivo build.gradle 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.

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 destinado a los de la clase R generada en la app (que se usa a fin de acceder a la los recursos de tu 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 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 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:

android {
    namespace 'com.example.myapp'
    testNamespace 'com.example.mytestapp'
    ...
}

Precaución: No configures testNamespace y namespace con el mismo valor; de lo contrario, se producirán colisiones de espacios de nombres.

Para más información sobre las pruebas, consulta Cómo probar apps en Android.