From 3b09e5ee082bd3a04bc76bd2b64fa57ac16a5994 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Tue, 13 Mar 2018 12:13:23 +0100 Subject: [PATCH] update: do not crash on android-26+ XML icon For example: res/drawable-v26/icon.xml Here's the full range of possibilities, we have a lot of work to do: $ for f in */*.apk; do unzip -l $f |grep -F icon.| grep -Eo 'res/drawable[^/]*'; done | sort -u res/drawable res/drawable-anydpi-v21 res/drawable-anydpi-v26 res/drawable-hdpi res/drawable-hdpi-v11 res/drawable-hdpi-v12 res/drawable-hdpi-v4 res/drawable-hdpi-v5 res/drawable-hdpi-v6 res/drawable-hdpi-v9 res/drawable-large res/drawable-large-hdpi-v11 res/drawable-large-hdpi-v4 res/drawable-large-ldpi-v4 res/drawable-large-mdpi res/drawable-large-mdpi-v11 res/drawable-large-v4 res/drawable-large-xhdpi-v11 res/drawable-large-xhdpi-v4 res/drawable-large-xxhdpi-v11 res/drawable-large-xxhdpi-v4 res/drawable-ldpi res/drawable-ldpi-v11 res/drawable-ldpi-v4 res/drawable-ldpi-v5 res/drawable-ldpi-v6 res/drawable-ldpi-v9 res/drawable-ldrtl-v17 res/drawable-mdpi res/drawable-mdpi-v11 res/drawable-mdpi-v12 res/drawable-mdpi-v4 res/drawable-mdpi-v5 res/drawable-mdpi-v6 res/drawable-mdpi-v9 res/drawable-nodpi res/drawable-nodpi-v4 res/drawable-tvdpi-v4 res/drawable-v11 res/drawable-v14 res/drawable-v21 res/drawable-xhdpi res/drawable-xhdpi-v11 res/drawable-xhdpi-v12 res/drawable-xhdpi-v4 res/drawable-xhdpi-v9 res/drawable-xlarge-hdpi res/drawable-xlarge-hdpi-v4 res/drawable-xlarge-mdpi res/drawable-xlarge-mdpi-v4 res/drawable-xlarge-v4 res/drawable-xlarge-xhdpi-v4 res/drawable-xxhdpi res/drawable-xxhdpi-v11 res/drawable-xxhdpi-v21 res/drawable-xxhdpi-v4 res/drawable-xxhdpi-v9 res/drawable-xxxhdpi res/drawable-xxxhdpi-v11 res/drawable-xxxhdpi-v4 --- fdroidserver/update.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/fdroidserver/update.py b/fdroidserver/update.py index fa2ba8d1..af731dd1 100644 --- a/fdroidserver/update.py +++ b/fdroidserver/update.py @@ -60,6 +60,7 @@ APK_PERMISSION_PAT = \ APK_FEATURE_PAT = re.compile(".*name='([^']*)'.*") screen_densities = ['65534', '640', '480', '320', '240', '160', '120'] +# resolutions must end with 'dpi' screen_resolutions = { "xxxhdpi": '640', "xxhdpi": '480', @@ -67,7 +68,7 @@ screen_resolutions = { "hdpi": '240', "mdpi": '160', "ldpi": '120', - "undefined": '-1', + "undefineddpi": '-1', "anydpi": '65534', "nodpi": '65535' } @@ -1090,7 +1091,7 @@ def _get_apk_icons_src(apkfile, icon_name): m = density_re.match(filename) if m: folder = m.group(1).split('-') - if len(folder) > 1: + if len(folder) > 1 and folder[1].endswith('dpi'): density = screen_resolutions[folder[1]] else: density = '160' -- 2.30.2