Что такое «частичная установка приложения» через adb?

Android adbимеет «частичную установку приложения» :

$ 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)

Уведомление -p" частичная установка приложения" .

Что такое частичная установка приложения?

Ответы (1)

Я предполагаю, что -p: частичная установка приложения предназначена для установки пакетов, которые являются обновлением существующего пакета, но не являются автономными сами по себе, подобно тому, как Play Store обновляет приложение, используя дельта - обновления или интеллектуальные обновления.

-pтребует, чтобы базовый пакет существовал и его имя передавалось рядом с ним, иначе он выдаст ошибку

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

Если APK, который вы передаете, не является добавочным обновлением существующего пакета ( PACKAGE), вы получите

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

У меня нет добавочного обновления, поэтому я не могу проверить свое собственное утверждение, и у меня нет других веских доказательств всего утверждения, кроме этих двух:

Комментарий в теме Issue:1134353002

Сплиты не являются обычными .apks, и их можно установить только через «adb install-multiple».

И этот фрагмент кода упоминается в исходном коде PackageInstallerSession.java .

еще {
  // Partial installs must be consistent with existing install 
  окончательное приложение ApplicationInfo = mPm.getApplicationInfo (mPackageName, 0, userId);
  если (приложение == ноль) {
      выбросить новое исключение PackageManagerException( INSTALL_FAILED_INVALID_APK, " Missing existing base package for " + mPackageName);
  }
Вкратце достаточно этой цитаты: "adb install-multiple"