8 votes

Qu'est-ce qu'une "installation partielle d'une application" via adb ?

Android adb a un "installation partielle de l'application" :

$ adb install
Android Debug Bridge version 1.0.32
...

  adb install [-lrtsd] <file>
  adb install-multiple [-lrtsdp] <file...>
                               - push this package file to the device and install it
                                 (-l: forward lock application)
                                 (-r: replace existing application)
                                 (-t: allow test packages)
                                 (-s: install application on sdcard)
                                 (-d: allow version code downgrade)
                                 (-p: partial application install)

Avis -p es "installation partielle de l'application" .

Qu'est-ce qu'une installation partielle d'une application ?

4voto

Firelord Points 23064

Je suppose que le -p : installation partielle de l'application sert à installer des paquets qui sont une mise à jour d'un paquet existant mais qui ne sont pas autonomes en eux-mêmes, une sorte de comment le Play Store met à jour une application en utilisant delta ou des mises à jour intelligentes.

-p nécessite l'existence d'un paquet de base et le passage de son nom à côté de lui, sinon il lancera l'erreur

Error: java.lang.IllegalArgumentException: Missing inherit package name

Si l'APK que vous transmettez n'est pas une mise à jour incrémentielle d'un paquet existant ( PACKAGE ), vous vous retrouveriez avec

Failed to finalize session
Failure [INSTALL_FAILED_INVALID_APK: Missing existing base package for PACKAGE]

Je n'ai pas de mise à jour incrémentale, je ne peux donc pas vérifier ma propre affirmation, et je n'ai aucune autre preuve solide pour l'ensemble de l'affirmation que ces deux-là :

Un commentaire dans Numéro:1134353002 filetage

Les splits ne sont pas des .apks normaux, et ils ne peuvent être installés que via "adb install-multiple".

Et, cet extrait de code mentionné sous le code source de PackageInstallerSession.java

else {
  `**// Partial installs must be consistent with existing install**` 
  final ApplicationInfo app = mPm.getApplicationInfo(mPackageName, 0, userId);
  if (app == null) {
      throw new PackageManagerException(`**INSTALL_FAILED_INVALID_APK**`, "`**Missing existing base package for**` " + `**mPackageName**`);
  }

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X