script.py 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. # coding:utf8
  2. __author__ = '极无双'
  3. import os
  4. import logging
  5. import xml.dom.minidom
  6. import re
  7. import shutil
  8. import glob
  9. ANDROID_NS = 'http://schemas.android.com/apk/res/android'
  10. from xml.etree import ElementTree as ET
  11. def script(SDK, decompileDir, channelSdkInfo, new_game_channel_info, gameInfo):
  12. modify_manifest(decompileDir, "com.excelliance.lbsdk.debug.LBSdkCrashReportService", "foregroundServiceType")
  13. modify_manifest(decompileDir, "com.excelliance.lbsdk.base.AssistService", "foregroundServiceType")
  14. modify_manifest(decompileDir, "com.excelliance.lbsdk.base.BaseService", "foregroundServiceType")
  15. modify_manifest(decompileDir, "com.excelliance.lbsdk.main.BGService", "foregroundServiceType")
  16. modify_manifest_activity(decompileDir, "org.cocos2dx.lua.AppActivity", "requestLegacyExternalStorage")
  17. # modify_manifest_common(decompileDir, "dataExtractionRules")
  18. def modify_manifest(decompileDir, serviceName, key):
  19. ET.register_namespace('android', ANDROID_NS)
  20. xmlparse = os.path.join(decompileDir, 'AndroidManifest.xml')
  21. root_node = ET.parse(xmlparse)
  22. root = root_node.getroot()
  23. name = '{' + ANDROID_NS + '}name'
  24. authorities = '{' + ANDROID_NS + '}' + key
  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 serviceName == providerName:
  33. try:
  34. del provider.attrib[authorities]
  35. # del provider.attrib[authoritiesTwo]
  36. except:
  37. ""
  38. root_node.write(xmlparse, 'utf-8')
  39. def modify_manifest_activity(decompileDir, serviceName, key):
  40. ET.register_namespace('android', ANDROID_NS)
  41. xmlparse = os.path.join(decompileDir, 'AndroidManifest.xml')
  42. root_node = ET.parse(xmlparse)
  43. root = root_node.getroot()
  44. name = '{' + ANDROID_NS + '}name'
  45. authorities = '{' + ANDROID_NS + '}' + key
  46. package_name = root.attrib.get('package')
  47. if package_name == None:
  48. return
  49. providers = root.findall('./application/activity')
  50. if providers != None:
  51. for provider in providers:
  52. providerName = provider.attrib.get(name)
  53. if serviceName == providerName:
  54. try:
  55. del provider.attrib[authorities]
  56. # del provider.attrib[authoritiesTwo]
  57. except:
  58. ""
  59. root_node.write(xmlparse, 'utf-8')
  60. def modify_manifest_common(decompileDir, removeKey):
  61. ET.register_namespace('android', ANDROID_NS)
  62. xmlparse = os.path.join(decompileDir, 'AndroidManifest.xml')
  63. logging.info(xmlparse)
  64. root_node = ET.parse(xmlparse)
  65. root = root_node.getroot()
  66. name = '{' + ANDROID_NS + '}name'
  67. authorities = '{' + ANDROID_NS + '}' + removeKey
  68. package_name = root.attrib.get('package')
  69. if package_name == None:
  70. return
  71. providers = root.findall('./application')
  72. if providers != None:
  73. for provider in providers:
  74. try:
  75. del provider.attrib[authorities]
  76. except:
  77. ""
  78. root_node.write(xmlparse, 'utf-8')
  79. if __name__ == '__main__':
  80. ""