script.py 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. # coding:utf8
  2. __author__ = 'dong'
  3. import os
  4. import logging
  5. import xml.dom.minidom
  6. import re
  7. import shutil
  8. import glob
  9. from xml.etree.ElementTree import ElementTree, Element
  10. import distutils.dir_util
  11. from xml.etree import ElementTree as ET
  12. def script_pre(SDK, decompileDir, channelSdkInfo, new_game_channel_info, gameInfo):
  13. logging.info("in script")
  14. if channelSdkInfo['id'] == "549":
  15. logging.info("in 549")
  16. # loading_png9 = os.path.join(SDK, "100qu/ForRes/drawable-hdpi/loading_bg.9.png")
  17. loading_png9 = os.path.join(decompileDir, "res/drawable-hdpi/loading_bg.png")
  18. png_list = [
  19. "res/drawable-mdpi/abc_list_pressed_holo_dark.png",
  20. "res/drawable-hdpi/abc_list_pressed_holo_dark.png",
  21. "res/drawable-xhdpi/abc_list_pressed_holo_dark.png",
  22. "res/drawable-xxhdpi/abc_list_pressed_holo_dark.png",
  23. "res/drawable-mdpi/abc_list_selector_disabled_holo_dark.png",
  24. "res/drawable-hdpi/abc_list_selector_disabled_holo_dark.png",
  25. "res/drawable-xhdpi/abc_list_selector_disabled_holo_dark.png",
  26. "res/drawable-xxhdpi/abc_list_selector_disabled_holo_dark.png",
  27. ]
  28. for p in png_list:
  29. logging.info("in png_list")
  30. loading_png9 = os.path.join(decompileDir, p)
  31. remove_source(loading_png9)
  32. def script_second(workspace_sdk_dir, extract_dir, channel_sdk_info, new_game_channel_info, game_info):
  33. logging.info('script_second: ' + str(channel_sdk_info))
  34. # 逆向渠道id
  35. if channel_sdk_info['id'] == '597':
  36. public_xml = os.path.join(extract_dir, "res/values/public.xml")
  37. handle_public_xml(public_xml, "attr-private")
  38. public_xml = os.path.join(extract_dir, "res/layout/design_bottom_sheet_dialog.xml")
  39. handle_public_xml(public_xml, "attr-private")
  40. public_xml = os.path.join(extract_dir, "res/layout/mtrl_layout_snackbar.xml")
  41. # handle_public_xml(public_xml, "attr-private")
  42. if os.path.exists(public_xml):
  43. os.remove(public_xml)
  44. public_xml = os.path.join(extract_dir, "res/layout-sw600dp/mtrl_layout_snackbar.xml")
  45. # handle_public_xml(public_xml, "attr-private")
  46. if os.path.exists(public_xml):
  47. os.remove(public_xml)
  48. public_xml = os.path.join(extract_dir, "res/values/public.xml")
  49. handle_public_xml(public_xml, "mtrl_layout_snackbar")
  50. public_xml = os.path.join(extract_dir, "res/layout/mtrl_layout_snackbar_include.xml")
  51. handle_public_xml(public_xml, "attr-private")
  52. public_xml = os.path.join(extract_dir, "res/drawable-v21/abc_dialog_material_background.xml")
  53. handle_public_xml(public_xml, "attr-private")
  54. public_xml = os.path.join(extract_dir, "res/values/styles.xml")
  55. handle_public_xml(public_xml, "attr-private")
  56. public_xml = os.path.join(extract_dir, "res/values-v21/styles.xml")
  57. handle_public_xml(public_xml, "attr-private")
  58. return
  59. def script_last(SDK, decompileDir, channelSdkInfo, new_game_channel_info, gameInfo):
  60. logging.info('------------channelSdkInfo:' + str(channelSdkInfo))
  61. # if channelSdkInfo['id'] == "597":
  62. remove_false_string(decompileDir + "/res/values/ids.xml")
  63. def handle_public_xml(public_xml_path, remove_node):
  64. if not os.path.exists(public_xml_path):
  65. logging.info('public_xml is null: ' + public_xml_path)
  66. return
  67. new_lines = []
  68. with open(public_xml_path, 'r+') as f:
  69. for line in f.readlines():
  70. # l = line.strip()
  71. if line.find(remove_node) > -1:
  72. continue
  73. new_lines.append(line)
  74. f.seek(0)
  75. f.truncate()
  76. f.writelines(new_lines)
  77. return
  78. def remove_source(path_source):
  79. logging.info(path_source)
  80. if not os.path.exists(path_source):
  81. logging.info("path_source_not_exits")
  82. return
  83. logging.info("in remove")
  84. os.remove(path_source)
  85. def modify_xml(path_xml, name_xml):
  86. root_node = ET.parse(path_xml)
  87. root = root_node.getroot()
  88. name = 'name'
  89. providers = root.findall("./public/[@name='loading_bg']")
  90. if providers is not None:
  91. for provider in providers:
  92. # 使用try 主要是为了 防止此属性不在时,导致的错误,而程序终止
  93. try:
  94. root.remove(provider)
  95. except:
  96. ""
  97. root_node.write(path_xml, 'utf-8')
  98. def remove_false_string(file_path):
  99. # 打开文本文件并读取内容
  100. with open(file_path, 'r') as file:
  101. lines = file.readlines()
  102. # 删除每一行中的指定字符串
  103. filtered_lines = [line.replace('false', '') for line in lines]
  104. # 打开文本文件以写入模式,将修改后的内容写回原文件
  105. with open(file_path, 'w') as file:
  106. file.writelines(filtered_lines)
  107. if __name__ == '__main__':
  108. # script_pre("", "f:\\ztest", "", "", "")
  109. modify_xml("G:\\autopack2.0_kuaifa\\tool\\config\\sdk4\\public.xml", "loading_bg")