script.py 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. # coding:utf8
  2. __author__ = 'dong'
  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 os
  11. import gw_apk_tool
  12. from xml.etree import ElementTree as ET
  13. ANDROID_NS = 'http://schemas.android.com/apk/res/android'
  14. def script(SDK, decompileDir, channelSdkInfo, new_game_channel_info, gameInfo):
  15. logging.info('------------channelSdkInfo:' + str(channelSdkInfo))
  16. if channelSdkInfo['id'] == '549':
  17. del_qihoo(decompileDir)
  18. gw_apk_tool.yml_remove_uncompress(decompileDir)
  19. if channelSdkInfo['id'] == '323':
  20. logging.info("remove_navigate")
  21. remove_navigate(decompileDir)
  22. modify_manifest(decompileDir, "requestLegacyExternalStorage")
  23. def del_qihoo(decompileDir):
  24. qihoo = os.path.join(decompileDir, 'smali_classes2/com/qihoo')
  25. if os.path.exists(qihoo):
  26. shutil.rmtree(qihoo)
  27. def remove_navigate(decompileDir):
  28. tmp_res = os.path.join(decompileDir, "res", "navigation")
  29. tmp_public_xml = os.path.join(decompileDir, "res", "values", "public.xml")
  30. if os.path.exists(tmp_res):
  31. distutils.dir_util.remove_tree(tmp_res)
  32. if os.path.exists(tmp_public_xml):
  33. os.remove(tmp_public_xml)
  34. def modify_manifest(decompileDir, removeKey):
  35. ET.register_namespace('android', ANDROID_NS)
  36. xmlparse = os.path.join(decompileDir, 'AndroidManifest.xml')
  37. root_node = ET.parse(xmlparse)
  38. root = root_node.getroot()
  39. name = '{' + ANDROID_NS + '}name'
  40. authorities = '{' + ANDROID_NS + '}' + removeKey
  41. package_name = root.attrib.get('package')
  42. if package_name == None:
  43. return
  44. providers = root.findall('./application')
  45. if providers != None:
  46. for provider in providers:
  47. # providerName = provider.attrib.get(name)
  48. # if 'com.netease.ntunisdk.CcMomentRecordingForegroundService' == providerName:
  49. # 使用try 主要是为了 防止此属性不在时,导致的错误,而程序终止
  50. try:
  51. del provider.attrib[authorities]
  52. except:
  53. ""
  54. root_node.write(xmlparse, 'utf-8')
  55. if __name__ == '__main__':
  56. # del_qihoo("C:\\Users\\Administrator\\Desktop\\zt")
  57. remove_navigate("G:\\autopack2.0_kuaifa\\tool\\workspace\\lrs360\\13651\\extract")