2010-11-10 14 views
16

algunas preguntas:Preguntas sobre actualización de la aplicación Android

  1. ¿Qué implicaciones tiene la actualización de una aplicación han de datos almacenados es decir, las preferencias y la base de datos? ¿El sistema realiza una instalación limpia de la nueva versión (es decir, elimina la versión anterior y luego instala la nueva) o alguna otra cosa?

  2. ¿Qué sucede si el usuario desea conservar los datos almacenados, por ejemplo, valores en la preferencia compartida o en una base de datos sqlite?

  3. ¿Cómo puedo emular este escenario de aplicación de actualización de instalación? Si tengo una versión 'x' instalada en mi emualator y hago una instalación de adb de la versión 'x + 1', recibo el error INSTALL_FAILED_ALREADY_EXIST. ¿Debo intentar alojar el nuevo apk en un servidor web, el administrador de paquetes tomará esto como una actualización?

Respuesta

31
  1. Todos los datos persisten (archivos, preferencias, bases de datos). Las bases de datos son especiales, ya que puede especificar una versión de base de datos y si detecta que la versión se modificó llamará a su onUpgrade(). Para todos los demás, usted es responsable de actualizarlos a la nueva versión, si es necesario.
  2. Como dije en 1, Android persiste todo. Depende de usted manejar cualquier cambio en la forma en que almacena sus datos.
  3. Utilice adb install -r /path/to/newApk.apk (observe el -r indicador, que le dice a adb r einstall). Básicamente, el flujo de trabajo debe ser el siguiente:

.

adb uninstall my.package 
adb install /path/to/old.apk 
# play with app, set preferences, databases, etc. 
adb install -r /path/to/new.apk 
# watch your app crash in an impressive ball of fire 
# fix stuff 
# goto 0 

Otras notas: Sí, la aplicación realiza una limpia eliminación de su aplicación antes de instalar la nueva versión. Como dije, sin embargo, los datos de su aplicación no se eliminan. Aún así, hay que tener cuidado, porque esta eliminación provoca un par de cosas:

  • Cualquier procesos relacionados con su aplicación están muertos (lo que si su aplicación se está ejecutando - cualquier actividad, los servicios, cualquier cosa, todos los componentes se delicado).
  • Cualquier cosa relacionada con su aplicación se elimina del sistema, como notificaciones enviadas a través del NotificationManager, alarmas configuradas a través del AlarmManager, etc. No estoy seguro de qué ocurre con los widgets que pueda tener (nunca funcionó con widgets).
+0

¡Gracias por una respuesta detallada! – Samuh

+0

Las variables estáticas y cualquier otra asignación de memoria también se eliminan. –

1
  1. usted tiene que tomar el cuidado de eso por ti mismo. Busque el método onUpgrade(), es decir,
  2. . Como debe cuidarse, puede brindarle al usuario la posibilidad de hacer de todo.
  3. Debe asegurarse de tener la opción de reinstalación establecida. Adb debe actualizar su aplicación correctamente que.
Cuestiones relacionadas