Package Name es un identificador único para aplicaciones Android basado en la notación de dominio inverso (reverse domain notation). El sistema lo utiliza para distinguir aplicaciones en el dispositivo del usuario, Google Play para identificar el producto y los servicios de Firebase para vincular todas las configuraciones del proyecto. Según la Documentación para Desarrolladores de Android, Package Name permanece sin cambios durante todo el ciclo de vida de la aplicación después de su publicación.
Puntos Clave
Package Name es una cadena única que Android utiliza para identificar una aplicación a nivel de sistema operativo. Corresponde al campo package en el archivo AndroidManifest.xml y al campo applicationId en el archivo build.gradle del módulo de la aplicación. Sin un Package Name único, es imposible instalar una aplicación en el dispositivo del usuario.
En el dispositivo, Package Name sirve como clave para la gestión de aplicaciones: el sistema almacena datos, configuraciones y caché de cada aplicación en el directorio /data/data/[packageName]. Dos aplicaciones con el mismo identificador no pueden coexistir — al intentar instalar un duplicado, el sistema solicita eliminar la existente.
En Android Gradle Plugin versión 0.11+ se introdujo una separación entre Package Name (en el manifiesto) y Application ID (en build.gradle). Application ID es el identificador real de la aplicación para el sistema y Google Play. Package Name en el manifiesto se utiliza para la resolución de recursos y la generación de la clase R. Se recomienda mantenerlos iguales para simplificar.
// build.gradle (Module: app)
android {
defaultConfig {
applicationId "com.example.myapplication"
minSdkVersion 24
targetSdkVersion 34
versionCode 1
versionName "1.0"
}
buildTypes {
debug {
applicationIdSuffix ".debug"
}
}
}
El campo applicationIdSuffix permite agregar un sufijo al Application ID para diferentes configuraciones de compilación. Una versión debug puede tener el identificador com.example.app.debug, lo que permite instalarla junto a la versión de producción para pruebas paralelas.
Google Play establece reglas estrictas para Package Name que deben cumplirse al publicar. El identificador debe ser único en toda la tienda, cumplir con los requisitos sintácticos y no violar las políticas de marcas comerciales.
Package Name solo puede contener letras latinas (A-Z, a-z), dígitos (0-9), un punto (.) y el guión bajo (_). La longitud máxima es de 150 caracteres. Cada segmento entre puntos debe comenzar con una letra. Los guiones, espacios y caracteres especiales están prohibidos por las reglas de Google Play.
| Requisito | Valor | Ejemplo |
|---|---|---|
| Caracteres Permitidos | Letras latinas, dígitos, punto, guión bajo | com.example.my_app |
| Longitud Máxima | 150 caracteres | com.example.verylongappname |
| Inicio de Segmento | Solo letra | com — no 3com |
| Prohibido | Guiones, espacios, cirílico | com.example-app — error |
| Unicidad | Global en Google Play | Verificado al crear |
La unicidad de Package Name es un requisito absoluto de Google Play Store. Si otra aplicación ya utiliza el identificador seleccionado, la publicación será rechazada. Google no libera los identificadores de aplicaciones eliminadas, por lo que elegir el primer Package Name es una decisión crítica para cada desarrollador.
La notación de dominio inverso es un estándar de nomenclatura donde el nombre de dominio de la empresa se escribe en orden inverso: com.example en lugar de example.com. Este sistema garantiza la unicidad global de los identificadores porque cada nombre de dominio es inherentemente único.
Los desarrolladores suelen usar un prefijo que corresponde al TLD de su dominio: com para organizaciones comerciales, org para organizaciones sin fines de lucro, io para proyectos tecnológicos, net para servicios y soluciones de red. Para proyectos personales, se acepta com.github.username o com.email.
Para aplicaciones publicadas en iOS y Android, se recomienda usar el mismo identificador en ambas plataformas. Esto simplifica la integración con Firebase, AppsFlyer, Adjust y otros sistemas analíticos que se vinculan al identificador del proyecto. Por ejemplo, com.mycompany.myapp será el Bundle ID en iOS y Package Name en Android.
Configurar Package Name en un proyecto Android implica cambiar el applicationId en build.gradle y la estructura de directorios del código Java/Kotlin correspondiente. Android Studio proporciona herramientas para la refactorización de Package Name, pero para proyectos complejos se recomienda una migración paso a paso.
// File path corresponde a Package Name
// com/example/myapp/MainActivity.kt
package com.example.myapp
import android.os.Bundle
import androidx.activity.ComponentActivity
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}
}
En Kotlin y Java, el Package Name en los archivos fuente debe coincidir con la estructura de directorios. Al cambiar el Package Name en build.gradle, debes mover los archivos a los directorios correspondientes y actualizar todas las declaraciones package e import. Android Studio puede hacer esto automáticamente mediante Refactor -> Move, pero para proyectos grandes con docenas de archivos, se recomienda verificar el resultado después de la refactorización.
Si el proyecto usa Data Binding, View Binding o Hilt, cambiar el Package Name también afectará a las clases generadas. Las clases de binding se crean basándose en el Package Name del módulo y el directorio layout. Después de cambiar el identificador, deberás reconstruir el proyecto para actualizar todas las referencias generadas. Se recomienda realizar una limpieza de compilación después de cambiar el Package Name para evitar errores de referencias antiguas en caché.
En Gradle 7.0+ se introdujo soporte para namespace en build.gradle, que reemplazó el campo package en AndroidManifest.xml para fines de generación de clase R y recursos. Mientras tanto, applicationId sigue siendo el identificador real de la aplicación para el sistema y Google Play. Esto permite tener diferentes applicationId y namespace, útil para módulos de biblioteca donde el namespace es fijo mientras el identificador público puede cambiar durante la compilación.
Para proyectos con arquitectura modular, cambiar el Package Name de un módulo puede afectar las importaciones en otros módulos. Si el módulo data tiene el paquete com.example.data y el módulo domain usa sus clases, después de cambiar el identificador, actualiza las importaciones en todos los módulos dependientes. Android Gradle Plugin versión 8.0+ simplifica este proceso con la generación automática de namespace desde build.gradle.
Para obtener el Application ID actual, usa la clase BuildConfig: BuildConfig.APPLICATION_ID. Esto es útil para lógica condicional en código, vinculación con el entorno o mostrar el identificador en pantallas de depuración. BuildConfig se genera automáticamente basándose en build.gradle.
// Obtención de Application ID en tiempo de ejecución
val packageName = BuildConfig.APPLICATION_ID
val packageManager = packageManager
val appInfo = packageManager.getPackageInfo(packageName, 0)
println("App version: ${appInfo.versionName} (${appInfo.versionCode})")
println("Package: $packageName")
Cambiar Package Name después de publicar una aplicación en Google Play es una operación que implica crear un producto completamente nuevo. El sistema no permite actualizar una aplicación existente con un Package Name diferente, por lo que decidir cambiar el identificador equivale a reiniciar el proyecto en la tienda.
Al cambiar Package Name se pierden: todas las calificaciones y reseñas, estadísticas de instalación, integración con Google Services (si no se migra), enlaces del proyecto Firebase (requiere crear un nuevo google-services.json). Los usuarios no recibirán una actualización automática — verán la nueva aplicación en la tienda.
Cambiar Package Name puede estar justificado durante un cambio de marca de la empresa, transferencia de la aplicación a otra cuenta de desarrollador o al crear una versión separada para otra región. En cualquier caso, antes del cambio se recomienda notificar a los usuarios a través de la aplicación anterior y preparar un plan de migración con transferencia de datos. Sin un plan de migración, los usuarios perderán el acceso al contenido comprado, suscripciones y datos guardados de la aplicación. La migración incluye transferir la base de datos y archivos mediante SharedPreferences o Room.
Antes de cambiar el Package Name, asegúrate de que el nuevo identificador sea único y cumpla con las reglas de nomenclatura. Crea una nueva aplicación en Google Play con el nuevo Package Name y publícala como un producto separado. En la descripción de la aplicación anterior, proporciona un enlace a la nueva. Considera usar Google Play Custom Store Listing para redirigir a los usuarios.
Preguntas Frecuentes
En Package Name se permite el carácter de guión bajo (_), pero no el guión (-). Los guiones bajos se usan raramente pero son aceptables: com.example.my_app. Los guiones están prohibidos por las reglas de Google Play y causarán un error durante la publicación. Se recomienda usar solo el punto como separador de segmentos.
Package Name es el identificador en AndroidManifest.xml utilizado para la resolución de recursos y la generación de la clase R. Application ID es el campo en build.gradle que determina el identificador de la aplicación para el sistema y Google Play Store. Se recomienda mantenerlos iguales, pero se permiten diferencias al usar applicationIdSuffix.
Usa la notación de dominio inverso de tu empresa o nickname: com.domain.appname. Asegúrate de que el identificador sea único en Google Play. Evita palabras comunes (todo, test, app) y verifica si el identificador ya está ocupado por otro desarrollador buscando en Google Play.
Sí, antes de publicar en Google Play, Package Name se puede cambiar sin consecuencias. Después del cambio, deberás regenerar google-services.json, actualizar la estructura de directorios y verificar todas las importaciones. Android Studio proporciona herramientas Refactor -> Move para automatizar el proceso.
Package Name junto con el certificado de firma forma un vínculo único que identifica la aplicación en Google Play. Incluso si dos aplicaciones tienen diferentes Package Names, pueden estar firmadas con la misma clave. Cambiar el certificado de firma es posible mediante Key Rotation en Play Console sin perder el identificador.
Resumen
Desarrollaremos una aplicación móvil llave en mano
IT Sectr crea aplicaciones para iOS y Android para startups y empresas desde 2017. Le asesoraremos y le propondremos la mejor solución.
Lea también