This commit is contained in:
parent
c8fde0d286
commit
eac18b1266
|
@ -1,12 +1,28 @@
|
|||
import hashlib
|
||||
import os
|
||||
from pathlib import Path
|
||||
import re
|
||||
|
||||
from scripts.context import Context
|
||||
from scripts.task import Task
|
||||
from utils import FileUtils
|
||||
|
||||
|
||||
def extract_launcher_ids(xml_content):
|
||||
"""
|
||||
修复版:提取所有以 "launcher_" 开头的 android:id 值
|
||||
"""
|
||||
pattern = r'android:id\s*=\s*"@\+id/(launcher_\w+)"'
|
||||
matches = re.findall(pattern, xml_content)
|
||||
return matches
|
||||
|
||||
|
||||
# def extract_launcher_ids(xml_content):
|
||||
# """提取所有 android:id 值"""
|
||||
# pattern = r'android:id\s*=\s*"@\+id/([^"]+)"'
|
||||
# return re.findall(pattern, xml_content)
|
||||
|
||||
|
||||
def string_to_md5(text):
|
||||
# 将字符串编码为UTF-8字节
|
||||
text_bytes = text.encode('utf-8')
|
||||
|
@ -36,6 +52,7 @@ def generate_encryption_key(key: str, s_len: int = -1, target_package_name: str
|
|||
|
||||
|
||||
layout_path = "LauncherCode/res/layout".replace("/", os.sep)
|
||||
values_path = "LauncherCode/res/values".replace("/", os.sep)
|
||||
drawable_xxhdpi_path = "LauncherCode/res/drawable-xxhdpi".replace("/", os.sep)
|
||||
drawable_path = "LauncherCode/res/drawable".replace("/", os.sep)
|
||||
code_path = "LauncherCode/src".replace("/", os.sep)
|
||||
|
@ -46,6 +63,8 @@ launcher_code_path = "lawnchair/src".replace("/", os.sep)
|
|||
src_code_path = "src".replace("/", os.sep)
|
||||
launchercode = "launchercode"
|
||||
|
||||
lawn_layout = "res/layout".replace("/", os.sep)
|
||||
|
||||
|
||||
class ProjectProguard(Task):
|
||||
def __init__(self, context: Context):
|
||||
|
@ -90,7 +109,44 @@ class ProjectProguard(Task):
|
|||
self.update(dir_path)
|
||||
pass
|
||||
|
||||
def update_id(self, file_path: str):
|
||||
for root, dirs, files in os.walk(file_path):
|
||||
for file in files:
|
||||
xml_file = os.path.join(root, file)
|
||||
text = open(xml_file, "r", encoding="UTF-8").read()
|
||||
ids = extract_launcher_ids(text)
|
||||
for id in ids:
|
||||
self.add_proguard_key(id)
|
||||
|
||||
def write_proguard(self):
|
||||
file_path = os.path.join(self.context.temp_project_path, "proguard.pro")
|
||||
lines = open(file_path, "r", encoding="UTF-8").readlines()
|
||||
lines.append(f"""
|
||||
|
||||
-repackageclasses '{self.context.package_name}' # 将所有类移动到 '{self.context.package_name}' 包下
|
||||
-flattenpackagehierarchy '{self.context.package_name}' # 扁平化包结构
|
||||
|
||||
""")
|
||||
|
||||
open(file_path, "w", encoding="UTF-8").writelines(lines)
|
||||
pass
|
||||
|
||||
def execute(self):
|
||||
self.write_proguard()
|
||||
self.add_proguard_key("LauncherMyNoActionBar")
|
||||
self.add_proguard_key("LauncherIntroTheme")
|
||||
self.add_proguard_key("LauncherGameIntroTheme")
|
||||
self.add_proguard_key("LauncherTransparentTheme")
|
||||
|
||||
self.add_proguard_key("launchergamead")
|
||||
self.add_proguard_key("launcher_help_detail")
|
||||
self.add_proguard_key("launcher_help")
|
||||
self.add_proguard_key("launcher_uninstall")
|
||||
self.add_proguard_key("launcher_onboard")
|
||||
|
||||
self.update_id(os.path.join(self.context.temp_project_path, lawn_layout))
|
||||
self.update_id(os.path.join(self.context.temp_project_path, layout_path))
|
||||
|
||||
self.rename_files_in_dir(os.path.join(self.context.temp_project_path, layout_path))
|
||||
self.rename_files_in_dir(os.path.join(self.context.temp_project_path, drawable_xxhdpi_path))
|
||||
self.rename_files_in_dir(os.path.join(self.context.temp_project_path, drawable_path))
|
||||
|
@ -104,6 +160,7 @@ class ProjectProguard(Task):
|
|||
)
|
||||
}
|
||||
self.update_proguard(os.path.join(self.context.temp_project_path, layout_path))
|
||||
self.update_proguard(os.path.join(self.context.temp_project_path, values_path))
|
||||
self.update_proguard(os.path.join(self.context.temp_project_path, drawable_xxhdpi_path))
|
||||
self.update_proguard(os.path.join(self.context.temp_project_path, drawable_path))
|
||||
self.update_proguard(os.path.join(self.context.temp_project_path, code_path))
|
||||
|
@ -111,4 +168,17 @@ class ProjectProguard(Task):
|
|||
self.update_proguard(os.path.join(self.context.temp_project_path, xml_path))
|
||||
self.update_proguard(os.path.join(self.context.temp_project_path, launcher_code_path))
|
||||
self.update_proguard(os.path.join(self.context.temp_project_path, src_code_path))
|
||||
|
||||
self.update_proguard(os.path.join(self.context.temp_project_path, lawn_layout))
|
||||
|
||||
pass
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
file = "../project/com_punch_prankster_puzzle_fwaes_free_launcher_fgsaw223908/LauncherCode/res/layout/a60034437eae19e7b00.xml".replace(
|
||||
"/", os.sep)
|
||||
text = open(file, "r", encoding="UTF-8").read()
|
||||
print(text)
|
||||
temp = extract_launcher_ids(text)
|
||||
print(temp)
|
||||
pass
|
||||
|
|
|
@ -265,7 +265,7 @@ plugins {
|
|||
|
||||
text = open(os.path.join(self.context.temp_project_path, ANDROID_MANIFEST_PATH), "r",
|
||||
encoding="utf-8").read()
|
||||
# text = text.replace("WebActivity", "com.unity3d.player.UnityPlayerActivity")
|
||||
text = text.replace("@style/LauncherGameIntroTheme", "@style/UnityThemeSelector")
|
||||
open(os.path.join(self.context.temp_project_path, ANDROID_MANIFEST_PATH), "w", encoding="utf-8").write(text)
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue