From 93fbb7282a2cc5b00e2376d6802de2c240ad7b5c Mon Sep 17 00:00:00 2001 From: Sergei Trofimov Date: Mon, 10 Oct 2016 12:55:14 +0100 Subject: [PATCH] AndroidDevice: added support for downgrade when installing an APK Adds support for passing -d option to "pm install", which allows installing an APK when a newer version of the package is already present on the device. --- wlauto/common/android/device.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/wlauto/common/android/device.py b/wlauto/common/android/device.py index 2285cf4d..47158b73 100644 --- a/wlauto/common/android/device.py +++ b/wlauto/common/android/device.py @@ -357,13 +357,15 @@ class AndroidDevice(BaseLinuxDevice): # pylint: disable=W0223 else: return self.install_executable(filepath, with_name) - def install_apk(self, filepath, timeout=default_timeout, replace=False): # pylint: disable=W0221 + def install_apk(self, filepath, timeout=default_timeout, replace=False, allow_downgrade=False): # pylint: disable=W0221 self._check_ready() ext = os.path.splitext(filepath)[1].lower() if ext == '.apk': flags = [] if replace: flags.append('-r') # Replace existing APK + if allow_downgrade: + flags.append('-d') # Install the APK even if a newer version is already installed if self.get_sdk_version() >= 23: flags.append('-g') # Grant all runtime permissions self.logger.debug("Replace APK = {}, ADB flags = '{}'".format(replace, ' '.join(flags)))