Add get apk version via adb
PiperOrigin-RevId: 595930239
diff --git a/ui_automator/android_device.py b/ui_automator/android_device.py
index c517377..86d0375 100644
--- a/ui_automator/android_device.py
+++ b/ui_automator/android_device.py
@@ -64,10 +64,28 @@
Raises:
adb.AdbError: When executing adb command fails.
"""
+ installed_version = get_apk_version(device, package_name)
+
+ return installed_version == version
+
+
+def get_apk_version(
+ device: android_device.AndroidDevice, package_name: str
+) -> str | None:
+ """Gets Android app version on given Android device.
+
+ Args:
+ device: An AndroidDevice object.
+ package_name: The Android app package name.
+
+ Returns:
+ The version of given package.
+
+ Raises:
+ adb.AdbError: When executing adb command fails.
+ """
grep_version_name = utils.grep(
'versionName', device.adb.shell(['dumpsys', 'package', package_name])
)
- return (
- bool(grep_version_name) and grep_version_name[0].split('=')[1] == version
- )
+ return grep_version_name[0].split('=')[1] if grep_version_name else None
diff --git a/ui_automator/android_device_test.py b/ui_automator/android_device_test.py
index 595f680..c7099ea 100644
--- a/ui_automator/android_device_test.py
+++ b/ui_automator/android_device_test.py
@@ -98,6 +98,22 @@
)
)
+ def test_get_apk_version_returns_version(self):
+ self.mock_android_device.adb.shell.return_value = b'versionName=1.2.4\n'
+
+ self.assertEqual(
+ ad.get_apk_version(self.mock_android_device, 'installed.apk'), '1.2.4'
+ )
+
+ def test_get_apk_version_returns_none_with_not_installed_apk(self):
+ self.mock_android_device.adb.shell.return_value = (
+ b'Unable to find package\n'
+ )
+
+ self.assertIsNone(
+ ad.get_apk_version(self.mock_android_device, 'notinstalled.apk')
+ )
+
if __name__ == '__main__':
unittest.main()