8 votos

¿Qué es una "instalación parcial de aplicación" vía adb?

El adb de Android tiene una "instalación parcial de aplicaciones":

$ adb install
Versión del Puente de Depuración de Android 1.0.32
...

  adb install [-lrtsd] 
  adb install-multiple [-lrtsdp] 
                               - empuje este archivo de paquete al dispositivo e instálelo
                                 (-l: aplicación de bloqueo avanzado)
                                 (-r: reemplazar la aplicación existente)
                                 (-t: permitir paquetes de prueba)
                                 (-s: instalar la aplicación en la tarjeta sd)
                                 (-d: permitir la desgraduación del código de versión)
                                 (-p: instalación parcial de aplicaciones)

Observa que -p es "instalación parcial de aplicaciones".

¿Qué es una instalación parcial de aplicaciones?

4voto

Firelord Puntos 161

Es mi suposición que la -p: instalación de aplicación parcial es para instalar paquetes que son una actualización de un paquete existente pero no son independientes en sí mismos, algo así como cómo Play Store actualiza una aplicación usando delta o actualizaciones inteligentes.

-p requiere que exista un paquete base y que se pase su nombre a continuación, de lo contrario arrojará el error

Error: java.lang.IllegalArgumentException: Falta el nombre del paquete heredado

Si el APK que estás pasando no es una actualización incremental de un paquete existente (PAQUETE), terminarás con

Error al finalizar la sesión
Error [INSTALL_FAILED_INVALID_APK: Falta el paquete base existente para el PAQUETE]

No tengo ninguna actualización incremental por lo que no puedo verificar mi propia afirmación, ni tengo ninguna otra evidencia sólida para toda la afirmación que no sean estas dos:

Un comentario en el hilo Issue:1134353002

Las divisiones no son apks normales y solo se pueden instalar a través de "adb install-multiple"

Y, este fragmento de código mencionado en el código fuente de PackageInstallerSession.java

else {
  `**// Las instalaciones parciales deben ser coherentes con la instalación existente**` 
  final ApplicationInfo app = mPm.getApplicationInfo(mPackageName, 0, userId);
  if (app == null) {
      throw new PackageManagerException(`**INSTALL_FAILED_INVALID_APK**`, "`**Falta el paquete base existente para**` " + `**mPackageName**`);
  }

0 votos

En resumen, esta cita es suficiente: "adb install-multiple"

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