script.py 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  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_common(decompileDir, "dataExtractionRules")
  17. def modify_manifest(decompileDir, serviceName, key):
  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 + '}' + key
  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 serviceName== providerName:
  32. try:
  33. del provider.attrib[authorities]
  34. # del provider.attrib[authoritiesTwo]
  35. except:
  36. ""
  37. root_node.write(xmlparse, 'utf-8')
  38. def modify_manifest_common(decompileDir, removeKey):
  39. ET.register_namespace('android', ANDROID_NS)
  40. xmlparse = os.path.join(decompileDir, 'AndroidManifest.xml')
  41. logging.info(xmlparse)
  42. root_node = ET.parse(xmlparse)
  43. root = root_node.getroot()
  44. name = '{' + ANDROID_NS + '}name'
  45. authorities = '{' + ANDROID_NS + '}' + removeKey
  46. package_name = root.attrib.get('package')
  47. if package_name == None:
  48. return
  49. providers = root.findall('./application')
  50. if providers != None:
  51. for provider in providers:
  52. try:
  53. del provider.attrib[authorities]
  54. except:
  55. ""
  56. root_node.write(xmlparse, 'utf-8')
  57. if __name__ == '__main__':
  58. ""