From beb3b011bd7919a238c573c13081e505c25569f7 Mon Sep 17 00:00:00 2001 From: Marc Bonnici Date: Wed, 25 Nov 2020 10:20:03 +0000 Subject: [PATCH] utils/apk_info: Handle apks that do not contain classes.dex Some apks do not contain the file that we use to determine app methods so return an empty list in this case. --- devlib/utils/android.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/devlib/utils/android.py b/devlib/utils/android.py index d77eecd..d6a9472 100755 --- a/devlib/utils/android.py +++ b/devlib/utils/android.py @@ -215,10 +215,14 @@ class ApkInfo(object): @property def methods(self): if self._methods is None: + # Only try to extract once + self._methods = [] with tempfile.TemporaryDirectory() as tmp_dir: with zipfile.ZipFile(self._apk_path, 'r') as z: - extracted = z.extract('classes.dex', tmp_dir) - + try: + extracted = z.extract('classes.dex', tmp_dir) + except KeyError: + return [] dexdump = os.path.join(os.path.dirname(aapt), 'dexdump') command = [dexdump, '-l', 'xml', extracted] dump = self._run(command)