From: Hans-Christoph Steiner Date: Tue, 4 Jul 2017 15:40:02 +0000 (+0200) Subject: update: find PNG when recommended icon is an XML file X-Git-Tag: 0.8~19^2 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=10a607ede3b61503cfd213b8b625b64ca06aaa25;p=fdroidserver.git 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 --- 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))