studio publicar minima generate change cambiar app android device conflict signature

publicar - ¿Cómo administrar la versión de depuración y lanzamiento en el dispositivo Android?



version app (5)

¿Por qué desinstalar la aplicación? Normalmente, la instalación de la nueva versión de la misma aplicación (identificada por el ID del paquete) conserva todos los datos de la aplicación.

EDITAR: para conservar los datos de la aplicación a mano, cópielos desde /data/data/my.package.name/... a un lugar seguro, luego restaure cuando sea necesario.

Soy nuevo en el desarrollo de Android y estoy casi listo para lanzar una primera versión de mi aplicación :)

Al probar la versión de lanzamiento firmada en mi teléfono, se niega a instalar porque la versión de depuración se instala con la firma de depuración.

Así que tengo que desinstalar la versión de depuración, pero borra toda mi base de datos (y lo hará con mis amigos que la están probando).

¿Hay una manera de administrar una versión de depuración y una versión de lanzamiento de la misma aplicación sin perder datos?


Gracias @Evan tu solución funciona a la perfección:

android { buildTypes { debug { applicationIdSuffix ".debug" } } }

Para agregar "(DEBUG)" al título de su aplicación cuando se ejecuta en modo de depuración, coloque este código en el onCreate de su Actividad:

PackageInfo pInfo = getPackageManager().getPackageInfo(getPackageName(), 0); //The .debug specified in gradle if (pInfo.packageName.equals("YOUR_PACKAGE_NAME_HERE.debug")) { setTitle(getTitle() + " (DEBUG)"); }


No tengo conocimiento de ninguna manera fácil de hacer eludir el proceso de desinstalación / reinstalación, por lo que sus opciones incluyen ...

  • Compre un segundo dispositivo para probar (algunos dispositivos Android ahora son muy baratos, especialmente en eBay)
  • Usa el emulador para probar.

Veo el mismo problema, pero es de esperar, así que uso el teléfono para depuración y la tableta para pruebas de producción. Cuando estoy cerca de un lanzamiento, pruebo la versión de producción en ambos dispositivos y en el emulador.

Con sus evaluadores, le aconsejo que siempre les dé versiones de lanzamiento, pero podría incluir un registro extenso para ayudar con los problemas. Las versiones de depuración solo son utilizadas por usted, y las versiones de lanzamiento por ellas. Si proporciona a los evaluadores una versión de lanzamiento, ellos usan y acumulan datos, cuando se actualicen a la siguiente versión, los datos se pueden conservar (o actualizar, si cambia el esquema) para migrar sus datos.

No veo la necesidad de que sus probadores utilicen versiones de depuración y lanzamiento.


Para mí, también necesitaba agregar:

<permission android:name="${applicationId}.permission.C2D_MESSAGE" android:protectionLevel="signature" /> <uses-permission android:name="${applicationId}.permission.C2D_MESSAGE" />

De lo contrario, ambos recibirían el mismo permiso C2D_MESSAGE que resultó en:

Failure [INSTALL_FAILED_DUPLICATE_PERMISSION perm=<your applicationId>.permission.C2D_MESSAGE pkg=<your applicationId>]


Muchos proyectos de Android están empezando a usar el sistema de desarrollo de gradle (pasamos a él cuando comenzamos a usar Android Studio). Afortunadamente, gradle hace que sea realmente sencillo instalar tanto una versión de desarrollo como una de lanzamiento, cada una con sus propios datos independientes. Los documentos de Android cubren esto, solo agregue un applicationIdSuffix a su tipo de compilación de depuración como:

android { buildTypes { debug { applicationIdSuffix ".debug" } } }