diff --git a/devlib/target.py b/devlib/target.py index eb0b48c..b583839 100644 --- a/devlib/target.py +++ b/devlib/target.py @@ -1225,13 +1225,6 @@ class AndroidTarget(Target): def connect(self, timeout=30, check_boot_completed=True): # pylint: disable=arguments-differ device = self.connection_settings.get('device') - if device and ':' in device: - # ADB does not automatically remove a network device from it's - # devices list when the connection is broken by the remote, so the - # adb connection may have gone "stale", resulting in adb blocking - # indefinitely when making calls to the device. To avoid this, - # always disconnect first. - adb_disconnect(device) super(AndroidTarget, self).connect(timeout=timeout, check_boot_completed=check_boot_completed) def kick_off(self, command, as_root=None): diff --git a/devlib/utils/android.py b/devlib/utils/android.py index dfe9723..ca36643 100755 --- a/devlib/utils/android.py +++ b/devlib/utils/android.py @@ -425,6 +425,12 @@ def adb_connect(device, timeout=None, attempts=MAX_ATTEMPTS): tries += 1 if device: if "." in device: # Connect is required only for ADB-over-IP + # ADB does not automatically remove a network device from it's + # devices list when the connection is broken by the remote, so the + # adb connection may have gone "stale", resulting in adb blocking + # indefinitely when making calls to the device. To avoid this, + # always disconnect first. + adb_disconnect(device) command = 'adb connect {}'.format(quote(device)) logger.debug(command) output, _ = check_output(command, shell=True, timeout=timeout)