mirror of
https://gitlab.com/android_translation_layer/android_translation_layer.git
synced 2025-04-28 12:17:57 +03:00
framework-res: add python script to remove unused resources
This script can be used when importing framework-res from AOSP
This commit is contained in:
parent
5f6943fd81
commit
e2d7f7fbb4
1 changed files with 46 additions and 0 deletions
46
res/remove_unused_resources.py
Executable file
46
res/remove_unused_resources.py
Executable file
|
@ -0,0 +1,46 @@
|
|||
#!/usr/bin/python3
|
||||
'''
|
||||
AOSPs framework-res contains a lot of drawables which are only for the systemUI. Only resources reachable
|
||||
from public.xml are part of the Android API and should be kept. This script removes all other resources.
|
||||
'''
|
||||
|
||||
import glob
|
||||
import re
|
||||
import os
|
||||
|
||||
# find all xml files and parse them for resource references
|
||||
xml_files = []
|
||||
resources = []
|
||||
xml_files_new = glob.glob("res/values/public*.xml")
|
||||
xml_files_new += glob.glob("res/values*/themes*.xml")
|
||||
xml_files_new += glob.glob("res/values*/styles*.xml")
|
||||
xml_files_new += glob.glob("res/values*/colors*.xml")
|
||||
xml_files_new += glob.glob("res/xml*/*.xml")
|
||||
xml_files_new += glob.glob("AndroidManifest.xml")
|
||||
while len(xml_files_new) > 0:
|
||||
xml_files += xml_files_new
|
||||
xml_files_old = xml_files_new
|
||||
xml_files_new = []
|
||||
for f in xml_files_old:
|
||||
with open(f, "r") as x:
|
||||
str = x.read()
|
||||
resources_new = []
|
||||
for pattern in ['name="(.*?)"', '"@drawable/(.*?)"', '>@drawable/(.*?)<', '@drawable/(.*?)\n', '"@layout/(.*?)"', '>@layout/(.*?)<', '>@android:layout/(.*?)<', '"@color/(.*?)"', '"@anim/(.*?)"', '"@android:drawable/(.*?)"', '"@\\*android:drawable/(.*?)"']:
|
||||
for m in re.finditer(pattern, str):
|
||||
resources_new.append(m.group(1))
|
||||
resources += resources_new
|
||||
for name in resources_new:
|
||||
matches = glob.glob("res/**/" + name + ".xml")
|
||||
for m in matches:
|
||||
if not m in xml_files:
|
||||
xml_files_new.append(m)
|
||||
|
||||
# remove unused layouts
|
||||
for f in glob.glob("res/layout*/*"):
|
||||
if not os.path.basename(f).split(".")[0] in resources:
|
||||
os.remove(f)
|
||||
|
||||
# remove unused drawables
|
||||
for f in glob.glob("res/drawable*/*"):
|
||||
if not os.path.basename(f).split(".")[0] in resources:
|
||||
os.remove(f)
|
Loading…
Add table
Add a link
Reference in a new issue