Исправление патчей, реализация базвого функционала для сборки apk
This commit is contained in:
+65
-7
@@ -2,15 +2,15 @@ from lxml import etree
|
||||
from copy import deepcopy
|
||||
|
||||
|
||||
def insert_after(anchor_name: str, elem_name: str):
|
||||
file_path = "../decompiled/res/values/public.xml"
|
||||
def insert_after_public(anchor_name: str, elem_name: str):
|
||||
file_path = "./decompiled/res/values/public.xml"
|
||||
parser = etree.XMLParser(remove_blank_text=True)
|
||||
tree = etree.parse(file_path, parser)
|
||||
root = tree.getroot()
|
||||
anchor = None
|
||||
types = {}
|
||||
|
||||
for idx, elem in enumerate(root):
|
||||
for elem in root:
|
||||
assert elem.tag == "public"
|
||||
assert elem.keys() == ["type", "name", "id"]
|
||||
attrs = dict(zip(elem.keys(), elem.values()))
|
||||
@@ -25,7 +25,6 @@ def insert_after(anchor_name: str, elem_name: str):
|
||||
if i not in group:
|
||||
free_ids.add(i)
|
||||
|
||||
assert len(free_ids) > 0
|
||||
new_id = None
|
||||
for i in free_ids:
|
||||
if i > int(anchor[1]["id"], 16):
|
||||
@@ -38,12 +37,71 @@ def insert_after(anchor_name: str, elem_name: str):
|
||||
if name == anchor[1]["type"]:
|
||||
continue
|
||||
if new_id in group:
|
||||
new_id = max(group)
|
||||
assert False, f"ID {new_id} already exists in group {name}"
|
||||
|
||||
new_elem = deepcopy(anchor[0])
|
||||
new_elem.set("id", new_id)
|
||||
new_elem.set("id", hex(new_id))
|
||||
new_elem.set("name", elem_name)
|
||||
anchor[0].addnext(new_elem)
|
||||
|
||||
tree.write(file_path, pretty_print=True, xml_declaration=True, encoding="utf-8")
|
||||
return new_id
|
||||
|
||||
|
||||
def insert_after_id(anchor_name: str, elem_name: str):
|
||||
file_path = "./decompiled/res/values/ids.xml"
|
||||
parser = etree.XMLParser(remove_blank_text=True)
|
||||
tree = etree.parse(file_path, parser)
|
||||
root = tree.getroot()
|
||||
anchor = None
|
||||
|
||||
for elem in root:
|
||||
assert elem.tag == "item"
|
||||
assert elem.keys() == ["type", "name"]
|
||||
attrs = dict(zip(elem.keys(), elem.values()))
|
||||
if attrs["name"] == anchor_name:
|
||||
assert anchor == None
|
||||
anchor = (elem, attrs)
|
||||
|
||||
new_elem = deepcopy(anchor[0])
|
||||
new_elem.set("name", elem_name)
|
||||
anchor[0].addnext(new_elem)
|
||||
tree.write(file_path, pretty_print=True, xml_declaration=True, encoding="utf-8")
|
||||
|
||||
|
||||
def change_color(name: str, value: str):
|
||||
file_path = "./decompiled/res/values/colors.xml"
|
||||
parser = etree.XMLParser(remove_blank_text=True)
|
||||
tree = etree.parse(file_path, parser)
|
||||
root = tree.getroot()
|
||||
replacements = 0
|
||||
|
||||
for elem in root:
|
||||
assert elem.tag == "color"
|
||||
assert elem.keys() == ["name"]
|
||||
attrs = dict(zip(elem.keys(), elem.values()))
|
||||
if attrs["name"] == name:
|
||||
elem.set("name", name)
|
||||
elem.text = value
|
||||
replacements += 1
|
||||
assert replacements >= 1
|
||||
tree.write(file_path, pretty_print=True, xml_declaration=True, encoding="utf-8")
|
||||
|
||||
def insert_after_color(anchor_name: str, elem_name: str, elem_value: str):
|
||||
file_path = "./decompiled/res/values/colors.xml"
|
||||
parser = etree.XMLParser(remove_blank_text=True)
|
||||
tree = etree.parse(file_path, parser)
|
||||
root = tree.getroot()
|
||||
anchor = None
|
||||
|
||||
for elem in root:
|
||||
assert elem.tag == "color"
|
||||
assert elem.keys() == ["name"]
|
||||
attrs = dict(zip(elem.keys(), elem.values()))
|
||||
if attrs["name"] == anchor_name:
|
||||
assert anchor == None
|
||||
anchor = (elem, attrs)
|
||||
|
||||
new_elem = deepcopy(anchor[0])
|
||||
new_elem.set("name", elem_name)
|
||||
anchor[0].addnext(new_elem)
|
||||
tree.write(file_path, pretty_print=True, xml_declaration=True, encoding="utf-8")
|
||||
|
||||
Reference in New Issue
Block a user