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
parent c14cbeb0
Pipeline #9626397 passed with stage
in 36 minutes and 43 seconds
......@@ -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
with open(icon_dest, 'wb') as f:
f.write(get_icon_bytes(apkzip, icon_src))
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment