script.py 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. # coding:utf8
  2. __author__ = 'Snow'
  3. import os
  4. import logging
  5. import xml.dom.minidom
  6. import re
  7. import shutil
  8. import glob
  9. import distutils.dir_util
  10. import gw_file_system
  11. import gw_data_center
  12. ANDROID_NS = 'http://schemas.android.com/apk/res/android'
  13. from xml.etree import ElementTree as ET
  14. def script(SDK, decompileDir, channelSdkInfo, new_game_channel_info, gameInfo):
  15. modify_manifest(decompileDir)
  16. def modify_manifest(decompileDir):
  17. ET.register_namespace('android', ANDROID_NS)
  18. xmlparse = os.path.join(decompileDir, 'AndroidManifest.xml')
  19. root_node = ET.parse(xmlparse)
  20. root = root_node.getroot()
  21. name = '{' + ANDROID_NS + '}name'
  22. authorities = '{' + ANDROID_NS + '}foregroundServiceType'
  23. authoritiesTwo = '{' + ANDROID_NS + '}requestLegacyExternalStorage'
  24. package_name = root.attrib.get('package')
  25. if package_name == None:
  26. return
  27. providers = root.findall('./application/service')
  28. if providers != None:
  29. for provider in providers:
  30. providerName = provider.attrib.get(name)
  31. if 'com.uwa.uwascreen.CaptureScreenService' == providerName:
  32. # 使用try 主要是为了 防止此属性不在时,导致的错误,而程序终止
  33. try:
  34. del provider.attrib[authorities]
  35. del provider.attrib[authoritiesTwo]
  36. except:
  37. ""
  38. if 'com.uwa.screenshot.mediaprojection.ScreenShotService' == providerName:
  39. # 使用try 主要是为了 防止此属性不在时,导致的错误,而程序终止
  40. try:
  41. del provider.attrib[authorities]
  42. except:
  43. ""
  44. root_node.write(xmlparse, 'utf-8')
  45. def modify_manifest_requestLegacyExternalStorage(decompileDir):
  46. ET.register_namespace('android', ANDROID_NS)
  47. xmlparse = os.path.join(decompileDir, 'AndroidManifest.xml')
  48. root_node = ET.parse(xmlparse)
  49. root = root_node.getroot()
  50. name = '{' + ANDROID_NS + '}name'
  51. authorities = '{' + ANDROID_NS + '}requestLegacyExternalStorage'
  52. package_name = root.attrib.get('package')
  53. if package_name == None:
  54. return
  55. providers = root.findall('./application')
  56. if providers != None:
  57. for provider in providers:
  58. # 使用try 主要是为了 防止此属性不在时,导致的错误,而程序终止
  59. try:
  60. del provider.attrib[authorities]
  61. except:
  62. ""
  63. root_node.write(xmlparse, 'utf-8')
  64. if __name__ == '__main__':
  65. ""