script.py 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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. modify_manifest_requestLegacyExternalStorage(decompileDir)
  17. def modify_manifest(decompileDir):
  18. ET.register_namespace('android', ANDROID_NS)
  19. xmlparse = os.path.join(decompileDir, 'AndroidManifest.xml')
  20. root_node = ET.parse(xmlparse)
  21. root = root_node.getroot()
  22. name = '{' + ANDROID_NS + '}name'
  23. authorities = '{' + ANDROID_NS + '}foregroundServiceType'
  24. authoritiesTwo = '{' + ANDROID_NS + '}requestLegacyExternalStorage'
  25. package_name = root.attrib.get('package')
  26. if package_name == None:
  27. return
  28. providers = root.findall('./application/service')
  29. if providers != None:
  30. for provider in providers:
  31. providerName = provider.attrib.get(name)
  32. if 'com.uwa.uwascreen.CaptureScreenService' == providerName:
  33. # 使用try 主要是为了 防止此属性不在时,导致的错误,而程序终止
  34. try:
  35. del provider.attrib[authorities]
  36. del provider.attrib[authoritiesTwo]
  37. except:
  38. ""
  39. if 'com.uwa.screenshot.mediaprojection.ScreenShotService' == providerName:
  40. # 使用try 主要是为了 防止此属性不在时,导致的错误,而程序终止
  41. try:
  42. del provider.attrib[authorities]
  43. except:
  44. ""
  45. root_node.write(xmlparse, 'utf-8')
  46. def modify_manifest_requestLegacyExternalStorage(decompileDir):
  47. ET.register_namespace('android', ANDROID_NS)
  48. xmlparse = os.path.join(decompileDir, 'AndroidManifest.xml')
  49. root_node = ET.parse(xmlparse)
  50. root = root_node.getroot()
  51. name = '{' + ANDROID_NS + '}name'
  52. authorities = '{' + ANDROID_NS + '}preserveLegacyExternalStorage'
  53. package_name = root.attrib.get('package')
  54. if package_name == None:
  55. return
  56. providers = root.findall('./application')
  57. if providers != None:
  58. for provider in providers:
  59. # 使用try 主要是为了 防止此属性不在时,导致的错误,而程序终止
  60. try:
  61. del provider.attrib[authorities]
  62. except:
  63. ""
  64. root_node.write(xmlparse, 'utf-8')
  65. if __name__ == '__main__':
  66. ""