| Index: build/android/pylib/device/adb_wrapper.py
|
| diff --git a/build/android/pylib/device/adb_wrapper.py b/build/android/pylib/device/adb_wrapper.py
|
| index 8e8abf8b5e01bcc7d9bdbc911b3f4e7a634e2758..f88eab35be2b1710fa6f0c74e4b32e1240c9f26f 100644
|
| --- a/build/android/pylib/device/adb_wrapper.py
|
| +++ b/build/android/pylib/device/adb_wrapper.py
|
| @@ -415,6 +415,40 @@ class AdbWrapper(object):
|
| raise device_errors.AdbCommandFailedError(
|
| cmd, output, device_serial=self._device_serial)
|
|
|
| + def InstallMultiple(self, apk_paths, forward_lock=False, reinstall=False,
|
| + sd_card=False, allow_downgrade=False, partial=False,
|
| + timeout=60*2, retries=_DEFAULT_RETRIES):
|
| + """Install an apk with splits on the device.
|
| +
|
| + Args:
|
| + apk_paths: Host path to the APK file.
|
| + forward_lock: (optional) If set forward-locks the app.
|
| + reinstall: (optional) If set reinstalls the app, keeping its data.
|
| + sd_card: (optional) If set installs on the SD card.
|
| + timeout: (optional) Timeout per try in seconds.
|
| + retries: (optional) Number of retries to attempt.
|
| + allow_downgrade: (optional) Allow versionCode downgrade.
|
| + partial: (optional) Package ID if apk_paths doesn't include all .apks.
|
| + """
|
| + for path in apk_paths:
|
| + _VerifyLocalFileExists(path)
|
| + cmd = ['install-multiple']
|
| + if forward_lock:
|
| + cmd.append('-l')
|
| + if reinstall:
|
| + cmd.append('-r')
|
| + if sd_card:
|
| + cmd.append('-s')
|
| + if allow_downgrade:
|
| + cmd.append('-d')
|
| + if partial:
|
| + cmd.extend(('-p', partial))
|
| + cmd.extend(apk_paths)
|
| + output = self._RunDeviceAdbCmd(cmd, timeout, retries)
|
| + if 'Success' not in output:
|
| + raise device_errors.AdbCommandFailedError(
|
| + cmd, output, device_serial=self._device_serial)
|
| +
|
| def Uninstall(self, package, keep_data=False, timeout=_DEFAULT_TIMEOUT,
|
| retries=_DEFAULT_RETRIES):
|
| """Remove the app |package| from the device.
|
| @@ -570,4 +604,3 @@ class AdbWrapper(object):
|
| return self.GetState() == _READY_STATE
|
| except device_errors.CommandFailedError:
|
| return False
|
| -
|
|
|