From 10a607ede3b61503cfd213b8b625b64ca06aaa25 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Tue, 4 Jul 2017 17:40:02 +0200 Subject: [PATCH] update: find PNG when recommended icon is an XML file APKs can now use XML files for vector graphics like the app icon. `aapt` returns the XML file by default, and perhaps also androguard. This checks if the icon is an XML file, and if so, it tries to find a PNG in the APK with the same name and density to use instead closes #322 This should also ultimately make the XML file available as an icon source as well fdroidclient#1091 --- fdroidserver/update.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/fdroidserver/update.py b/fdroidserver/update.py index 1ccec78a..286a5510 100644 --- a/fdroidserver/update.py +++ b/fdroidserver/update.py @@ -1386,6 +1386,13 @@ def extract_apk_icons(icon_filename, apk, apkzip, repo_dir): icon_dest = os.path.join(icon_dir, icon_filename) # Extract the icon files per density + if icon_src.endswith('.xml'): + png = os.path.basename(icon_src)[:-4] + '.png' + for f in apkzip.namelist(): + if f.endswith(png): + m = re.match(r'res/drawable-(x*[hlm]dpi).*/', f) + if m and screen_resolutions[m.group(1)] == density: + icon_src = f try: with open(icon_dest, 'wb') as f: f.write(get_icon_bytes(apkzip, icon_src)) -- 2.30.2