# coding:utf8

__author__ = '极无双'

import os
import logging
import xml.dom.minidom
import re
import shutil
import glob

ANDROID_NS = 'http://schemas.android.com/apk/res/android'
from xml.etree import ElementTree as ET

def script_last(SDK, decompileDir, channelSdkInfo, new_game_channel_info, gameInfo):
    fix_coolyun_application_getinstance_null_bug(decompileDir)
    return

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__':
    ""
