script.py 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. # coding:utf8
  2. import os
  3. import logging
  4. ANDROID_NAMESPACE = 'http://schemas.android.com/apk/res/android'
  5. logger = logging.getLogger('script.py')
  6. def script(workspace_sdk_dir, extract_dir, channel_sdk_info, new_game_channel_info, game_info):
  7. app_icon = os.path.join(extract_dir, "res/mipmap-ldpi/app_icon.jpeg")
  8. remove_app_icon(app_icon)
  9. app_icon = os.path.join(extract_dir, "res/mipmap-mdpi/app_icon.jpeg")
  10. remove_app_icon(app_icon)
  11. app_icon = os.path.join(extract_dir, "res/mipmap-xxxhdpi/app_icon.jpeg")
  12. remove_app_icon(app_icon)
  13. def script_last(SDK, decompileDir, channelSdkInfo, new_game_channel_info, gameInfo):
  14. fix_coolyun_application_getinstance_null_bug(decompileDir)
  15. def remove_app_icon(icon_path):
  16. if not os.path.exists(icon_path):
  17. logging.info('public_xml is null: ' + icon_path)
  18. return
  19. os.remove(icon_path)
  20. def fix_coolyun_application_getinstance_null_bug(decompile_dir):
  21. insert_str_list = [
  22. '\n\t.locals 1\n\n',
  23. '\tsget-object v0, Lcom/coolyun/framework/CoolYunApplication;->application:Landroid/content/Context;\n\n',
  24. '\tcheck-cast v0, Lcom/coolyun/framework/CoolYunApplication;\n\n',
  25. '\treturn-object v0\n\n']
  26. for dirpath, dirnames, filenames in os.walk(decompile_dir):
  27. if r'com\coolyun\framework' in dirpath and 'CoolYunApplication.smali' in filenames:
  28. smali_path = os.path.join(dirpath, 'CoolYunApplication.smali')
  29. with open(smali_path, 'r') as f:
  30. smali_str_arr = f.readlines()
  31. index_str = '.method public static getInstance()Lcom/coolyun/framework/CoolYunApplication;'
  32. end_method_str = '.end method'
  33. insert_str = ''.join(insert_str_list)
  34. on_create_index = 0
  35. insert_index = 0
  36. for line in smali_str_arr:
  37. if index_str in line:
  38. on_create_index = smali_str_arr.index(line)
  39. print('on_create_index', on_create_index, line)
  40. break
  41. for index, value in enumerate(smali_str_arr):
  42. if index > on_create_index and end_method_str in value:
  43. insert_index = index
  44. print('insert_index', index)
  45. break
  46. print(on_create_index, insert_index)
  47. del smali_str_arr[on_create_index + 1:insert_index]
  48. smali_str_arr.insert(on_create_index + 1, insert_str)
  49. with open(smali_path, 'w') as f:
  50. f.write(''.join(smali_str_arr))
  51. break
  52. if __name__ == '__main__':
  53. script('', 'E:/script_test', {}, {}, {})