script.py 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  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.excelliance.lbsdk.debug.LBSdkCrashReportService' == providerName:
  32. # 使用try 主要是为了 防止此属性不在时,导致的错误,而程序终止
  33. try:
  34. del provider.attrib[authorities]
  35. # del provider.attrib[authoritiesTwo]
  36. except:
  37. ""
  38. if 'com.excelliance.lbsdk.base.AssistService' == providerName:
  39. # 使用try 主要是为了 防止此属性不在时,导致的错误,而程序终止
  40. try:
  41. del provider.attrib[authorities]
  42. except:
  43. ""
  44. if 'com.excelliance.lbsdk.base.BaseService' == providerName:
  45. # 使用try 主要是为了 防止此属性不在时,导致的错误,而程序终止
  46. try:
  47. del provider.attrib[authorities]
  48. except:
  49. ""
  50. if 'com.excelliance.lbsdk.main.BGService' == providerName:
  51. # 使用try 主要是为了 防止此属性不在时,导致的错误,而程序终止
  52. try:
  53. del provider.attrib[authorities]
  54. except:
  55. ""
  56. root_node.write(xmlparse, 'utf-8')
  57. def modify_manifest_requestLegacyExternalStorage(decompileDir):
  58. ET.register_namespace('android', ANDROID_NS)
  59. xmlparse = os.path.join(decompileDir, 'AndroidManifest.xml')
  60. root_node = ET.parse(xmlparse)
  61. root = root_node.getroot()
  62. name = '{' + ANDROID_NS + '}name'
  63. authorities = '{' + ANDROID_NS + '}requestLegacyExternalStorage'
  64. package_name = root.attrib.get('package')
  65. if package_name == None:
  66. return
  67. providers = root.findall('./application')
  68. if providers != None:
  69. for provider in providers:
  70. # 使用try 主要是为了 防止此属性不在时,导致的错误,而程序终止
  71. try:
  72. del provider.attrib[authorities]
  73. except:
  74. ""
  75. root_node.write(xmlparse, 'utf-8')
  76. if __name__ == '__main__':
  77. ""