# coding:utf8 import os import logging ANDROID_NAMESPACE = 'http://schemas.android.com/apk/res/android' logger = logging.getLogger('script.py') def script(workspace_sdk_dir, extract_dir, channel_sdk_info, new_game_channel_info, game_info): app_icon = os.path.join(extract_dir, "res/mipmap-ldpi/app_icon.jpeg") remove_app_icon(app_icon) app_icon = os.path.join(extract_dir, "res/mipmap-mdpi/app_icon.jpeg") remove_app_icon(app_icon) app_icon = os.path.join(extract_dir, "res/mipmap-xxxhdpi/app_icon.jpeg") remove_app_icon(app_icon) def script_last(SDK, decompileDir, channelSdkInfo, new_game_channel_info, gameInfo): fix_coolyun_application_getinstance_null_bug(decompileDir) def remove_app_icon(icon_path): if not os.path.exists(icon_path): logging.info('public_xml is null: ' + icon_path) return os.remove(icon_path) def fix_coolyun_application_getinstance_null_bug(decompile_dir): insert_str_list = [ '\n\t.locals 1\n\n', '\tsget-object v0, Lcom/coolyun/framework/CoolYunApplication;->application:Landroid/content/Context;\n\n', '\tcheck-cast v0, Lcom/coolyun/framework/CoolYunApplication;\n\n', '\treturn-object v0\n\n'] for dirpath, dirnames, filenames in os.walk(decompile_dir): if r'com\coolyun\framework' in dirpath and 'CoolYunApplication.smali' in filenames: smali_path = os.path.join(dirpath, 'CoolYunApplication.smali') with open(smali_path, 'r') as f: smali_str_arr = f.readlines() index_str = '.method public static getInstance()Lcom/coolyun/framework/CoolYunApplication;' end_method_str = '.end method' insert_str = ''.join(insert_str_list) on_create_index = 0 insert_index = 0 for line in smali_str_arr: if index_str in line: on_create_index = smali_str_arr.index(line) print('on_create_index', on_create_index, line) break for index, value in enumerate(smali_str_arr): if index > on_create_index and end_method_str in value: insert_index = index print('insert_index', index) break print(on_create_index, insert_index) del smali_str_arr[on_create_index + 1:insert_index] smali_str_arr.insert(on_create_index + 1, insert_str) with open(smali_path, 'w') as f: f.write(''.join(smali_str_arr)) break if __name__ == '__main__': script('', 'E:/script_test', {}, {}, {})