2 votos

Proceso de actualización de la aplicación

Todavía no tengo claro qué ocurre cuando se actualiza una aplicación.

¿La nueva aplicación actualizada simplemente se "instala sobre" la antigua manteniendo los datos y la caché de la anterior? ¿Qué ocurre realmente cuando se actualiza una aplicación?

Al buscar en Internet 1 , y SE, no encontré ninguna información útil (no estoy preguntando sobre cómo actualizar usando googleplay.

PD: En los comentarios, AndrewT y Firelord me han dado indicaciones útiles y creo que la información que buscaba se centra en el funcionamiento de PackageManager y PackageInstaller.


1: Véase, por ejemplo "Cómo actualiza Android las aplicaciones" , cómo funciona la actualización de aplicaciones de Android , Explicación del proceso de actualización de aplicaciones de Android

0 votos

No creo que esta última afirmación esté bien adherida. Muchas apps que se distribuyen a través de Google Play tienen otras vías de distribución. Sólo hay que pensar en 'Monument Valley', que sus propios desarrolladores dicen que es altamente pirateada en un 90%. Si lo buscas en Google, encontrarás decenas de puntos de distribución. Consulta en Google

0 votos

Era sólo un ejemplo, pero no quiero que mencionarlo atasque las respuestas, así que he editado esa parte. Mi pregunta no se refiere a google u otras vías de distribución, se limita al proceso de actualización propiamente dicho. El comentario de Wbogacz se refiere a que mencioné que " las aplicaciones distribuidas a través de GooglePlay no pueden actualizarse de otra forma que no sea a través de GooglePlay, de acuerdo con las políticas para desarrolladores " en la pregunta antes de editarla

2 votos

pm install -r FILE . Lo que haría ese comando es lo que técnicamente ocurre en segundo plano durante una actualización de la aplicación.

4voto

Andy Brudtkuhl Puntos 1714

Es importante tener en cuenta que las aplicaciones de Android no se instalan de la misma manera que en Windows o en los sistemas GNU/Linux. La aplicación se ejecuta completamente desde el archivo APK. La instalación de una aplicación por primera vez incluye los siguientes pasos:

  1. Descargue el APK en el almacenamiento. Todos los archivos APK de las aplicaciones se descargan en la misma ubicación.

  2. Cree un ID de usuario para la nueva aplicación. Cada aplicación en Android se ejecuta en su propio ID de usuario de Linux. Esto es por seguridad, y es como funciona el sistema de permisos.

  3. Crea un directorio de datos para la nueva aplicación. Inicialmente está vacío.

  4. Añade la aplicación a la base de datos de aplicaciones instaladas del teléfono. Esta base de datos incluye el nombre (ID del paquete) de la app, la ruta del archivo APK y el ID del usuario, entre otras cosas.

Eso es todo lo que se necesita. Así que después de eso, es bastante fácil ver cómo actualizarlo:

  1. Descarga el nuevo archivo APK. Se trata de un nuevo archivo en la misma ubicación que los demás archivos APK.

  2. Comprueba que el antiguo APK se puede actualizar al nuevo APK. Comprueba que ambos fueron firmados por la misma clave, para evitar el robo de datos, y que el nuevo APK no es una versión anterior, y algunos otros ajustes del manifiesto de la aplicación. Si alguna de las comprobaciones falla y el APK antiguo no puede actualizarse al nuevo APK, la actualización se detiene con un error en este punto.

  3. Detener la versión antigua de la aplicación limpiamente.

  4. Comprueba si hay cambios en la aplicación (como nuevos permisos) y actualiza el ID de usuario de la aplicación en consecuencia. Actualiza la base de datos de aplicaciones instaladas para que apunte al nuevo archivo APK (y con otros datos sobre la nueva aplicación).

  5. Borra el archivo APK antiguo.

El proceso de actualización ni siquiera tiene que mirar el directorio de datos. Depende de la aplicación cambiar sus datos si la nueva versión utiliza un formato diferente o lo que sea. (Esto también significa que depende de la app qué versiones antiguas pueden actualizarse limpiamente sin perder datos).

El proceso funciona de la misma manera tanto si se actualiza la aplicación a través de Google Play, o alguna otra tienda de aplicaciones, como si se hace clic en el archivo APK, o se utiliza adb install . Sea cual sea el front-end que utilices, pasa por el mismo gestor de paquetes. La única diferencia es que, si utilizas una tienda de aplicaciones, probablemente también mantenga su propio registro de las versiones instaladas, tanto para ayudar al desarrollador de la aplicación a entender su base de usuarios, como para poder comprobar futuras actualizaciones.

0 votos

"Depende de la aplicación cambiar sus datos si la nueva versión utiliza un formato diferente o lo que sea" ¿Significa eso que si tengo, digamos, la versión 1 y pretendo actualizar directamente a la versión 7 la actualización podría fallar si los datos de la versión1 se conservan pero ha habido un cambio de formato en la versión3 y la versión más reciente no tiene instrucciones para cambiar el formato de los datos? ¿O cualquier versión posterior al cambio podrá actualizarse directamente desde una muy antigua?

3 votos

@ErikvanDoren Depende del autor de la app. Es posible que si te saltas muchas versiones, te encuentres con un caso que el autor no ha probado, y entonces la app no funcionará correctamente a no ser que borres sus datos (o puede que ella misma borre los datos, si está especialmente mal escrita). Sin embargo, espero que la mayoría de los autores de aplicaciones lo manejen correctamente.

0 votos

Falta un detalle importante: la comprobación de la firma :) En la actualización, este sería el paso antes de dejando de lado la versión antigua. Si las firmas no coinciden, el proceso de actualización se cancelaría en este punto.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X