Google play dice: "Necesitas usar un nombre de paquete diferente" – ¿por qué?

Ya he publicado una aplicación llamada com.mycompany.mygame en google play.

Entonces decidí publicar una versión libre del anuncio de ella. No cambié el nombre del paquete en eclipse porque me di cuenta de que en el proceso de "exportación" tienes la oportunidad de tener el apk final como lo que quieras. Así que lo pongo allí como com.mycompany.mygameaf – tenga en cuenta el adicional "af" en el final. Pero cuando intentó cargarlo al mercado, google dijo:

Necesita usar un nombre de paquete diferente porque "com.mycompany.mygame" ya está siendo usado por una de sus otras aplicaciones

Así que ahora estoy confundido. ¿Es la queja porque no se me permite tener un apk que es un nombre que es y la extensión de una aplicación anterior? ¿O el apk final de alguna manera tiene conocimiento de cuál era el nombre original?

¿Cuál es la manera más fácil de resolver esto?

Independientemente del nombre del archivo .apk, el nombre del paquete de los contenidos de la aplicación debe ser único.

Puede utilizar refactor-rename para cambiar esto, aunque asegúrese de que el cambio penetra en el archivo de manifiesto, en la configuración de proguard, etc.

El nombre del APK no importa, es el nombre del paquete dentro del archivo AndroidManifest que cuenta.

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.yourcompany.yourapp" 

Sólo puede haber una aplicación en el mercado con ese nombre de paquete para publicar su versión gratuita de anuncio que tendría que cambiar el nombre del paquete en el archivo de manifiesto, por ejemplo, agregue el af al final del nombre del paquete dentro de su manifiesto.

Como se mencionó en otras respuestas, su desarrollo sería más sencillo si pone todo el código compartido y los activos en un proyecto de biblioteca común que es una dependencia de sus versiones pagadas y gratuitas.

También puede jugar con el nuevo sistema de compilación de Gradle (en Android Studio) que le permite establecer dinámicamente cosas como el nombre del paquete en tiempo de ejecución. También le permite cambiar recursos durante el tiempo de construcción, lo cual es muy conveniente; Usted podría tener un recurso booleano que representa si la aplicación actual es la versión pagada. Esto le permite habilitar / deshabilitar las funciones de la aplicación basándose en una comprobación a ese valor.

El nombre de archivo del APK es irrelevante, el nombre del paquete de su aplicación se utiliza como un identificador único – está en el elemento raíz en el archivo AndroidManifest.xml

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.packagename" android:versionCode="1" android:versionName="1.0" > 

Cuando inicialmente crea su proyecto en Eclipse, crea una estructura de paquete real que coincide con el nombre del paquete para que pueda incluir los archivos de origen.

En realidad, puede cambiar el nombre del paquete modificando este valor de manifiesto y simplemente puede mantener la estructura de la carpeta / paquete como es – no es necesario que coincida con el nombre del paquete de aplicación real.

Alternativamente, haga clic con el botón derecho del ratón en su proyecto en Eclipse, vaya a "Herramientas de Android" y luego seleccione "Renombrar paquete de aplicaciones"

Después de hacer esto usted debería ser capaz de enviar su binario

El nombre del paquete en el manifiesto se utiliza para identificar la aplicación en Android y en Google Play. Así que diferentes aplicaciones necesitan nombres diferentes.

La solución más fácil podría ser crear un nuevo paquete, sin código, y usarlo como nombre del paquete de la aplicación en el manifiesto.

Lo que he hecho para resolver mi problema de muchas aplicaciones de un código base es poner todo el código de las aplicaciones en un proyecto de biblioteca, y luego tengo varios proyectos de aplicación que utilizan esa biblioteca. Los proyectos de aplicación no contienen ningún código, sólo un manifiesto y recursos personalizados.

Aparte de corregir el nombre de la aplicación en el Manifiesto también tuve que cambiar applicationId en el archivo gradle.build de la aplicación.

  defaultConfig { applicationId "com.example.changednameofmyapp" ... } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.