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 describe la configuración útil de la app en el archivo build.gradle a nivel de módulo que probablemente quieras activar o desactivar. Además de brindar una descripción general de las propiedades importantes configuradas en el archivo build.gradle, se describe cómo puedes 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 (por ejemplo, com.example.myapp). Ese ID permite identificar de manera exclusiva tu app en el dispositivo y en Google Play Store. Una vez que publiques tu app, no debes cambiar el ID de aplicación. Si deseas subir una versión nueva de tu app, el ID de aplicación (y el certificado con el que la firmas) debe ser el mismo que el original que se publicó. Si cambias el ID de aplicación, Google Play Store tratará la carga como una app completamente diferente.

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"
    }
    ...
}

Si bien el ID de aplicación es similar a un nombre de paquete de Java tradicional (el espacio de nombres de tu código), 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 de estilo Java que elegiste durante la configuración. Técnicamente, puedes activar o desactivar las dos propiedades de forma independiente, pero no se recomienda.

Para configurar el ID de aplicación, te recomendamos lo siguiente:

  • El ID de la aplicación debe ser el mismo que el espacio de nombres. La distinción entre las dos propiedades puede ser un poco confusa, pero si las mantienes, no tendrás que preocuparte.
  • No cambies el ID de la aplicación después de publicarla. Si lo haces, Google Play Store tratará la carga posterior 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 la aplicación, lo que suele ser no deseado.

Nota: El ID de aplicación solía estar vinculado directamente al nombre de paquete de tu código; por lo tanto, algunas API de Android usan el término "package name" en los nombres de métodos y parámetros, pero se trata en realidad del ID de aplicación. Por ejemplo, el método Context.getPackageName() muestra el ID de aplicación. No es necesario que compartas el verdadero nombre de paquete de tu código fuera del código de la app.

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 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. Inicialmente, namespace se configura con el nombre de paquete de estilo Java que eliges cuando creas el proyecto.

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

Mientras compilas tu app en el paquete de aplicación final (APK), 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 app de recursos). Por ejemplo, en el archivo de compilación anterior, se crea la clase R en com.example.myapp.R.

Como tal, 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. Por supuesto, 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, debes mantener 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

Para simplificar, debes tratar de mantener el mismo espacio de nombres y el ID de aplicación como se encuentran en la configuración predeterminada. Sin embargo, es posible que debas cambiar el espacio de nombres en algún momento si deseas volver a organizar tu código o evitar colisiones de espacios de nombres. En estos casos, es posible cambiar el espacio de nombres (actualizando la propiedad namespace en el archivo build.gradle del módulo) sin importar el 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. Si quieres obtener 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 diferentes nombres para namespace y applicationId de Gradle, recuerda que 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 luego de una compilación, no debería sorprenderte que se haya establecido el atributo package en el ID de aplicación. El atributo package del manifiesto combinado es el lugar que 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. Si lo haces, habrá colisiones de espacio de nombres.

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