script.py 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  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.dena.lcx.sdk.internal.core.extras.update.DownloadService","foregroundServiceType")
  13. # modify_manifest(decompileDir,"com.screenrecord.ScreenRecordService","foregroundServiceType")
  14. modify_manifest_common(decompileDir, "dataExtractionRules")
  15. def modify_manifest(decompileDir, serviceName, key):
  16. ET.register_namespace('android', ANDROID_NS)
  17. xmlparse = os.path.join(decompileDir, 'AndroidManifest.xml')
  18. root_node = ET.parse(xmlparse)
  19. root = root_node.getroot()
  20. name = '{' + ANDROID_NS + '}name'
  21. authorities = '{' + ANDROID_NS + '}' + key
  22. package_name = root.attrib.get('package')
  23. if package_name == None:
  24. return
  25. providers = root.findall('./application/service')
  26. if providers != None:
  27. for provider in providers:
  28. providerName = provider.attrib.get(name)
  29. if serviceName== providerName:
  30. try:
  31. del provider.attrib[authorities]
  32. # del provider.attrib[authoritiesTwo]
  33. except:
  34. ""
  35. root_node.write(xmlparse, 'utf-8')
  36. def modify_manifest_common(decompileDir, removeKey):
  37. ET.register_namespace('android', ANDROID_NS)
  38. xmlparse = os.path.join(decompileDir, 'AndroidManifest.xml')
  39. logging.info(xmlparse)
  40. root_node = ET.parse(xmlparse)
  41. root = root_node.getroot()
  42. name = '{' + ANDROID_NS + '}name'
  43. authorities = '{' + ANDROID_NS + '}' + removeKey
  44. package_name = root.attrib.get('package')
  45. if package_name == None:
  46. return
  47. providers = root.findall('./application')
  48. if providers != None:
  49. for provider in providers:
  50. try:
  51. del provider.attrib[authorities]
  52. except:
  53. ""
  54. root_node.write(xmlparse, 'utf-8')
  55. if __name__ == '__main__':
  56. ""