# coding:utf8

__author__ = '灌篮高手酷派'

import os
import gw_apk_tool


def script_init(SDK, decompileDir, channelSdkInfo, new_game_channel_info, gameInfo):
    # 删除渠道的so，为保留游戏的so
    list_so = ["libentryexpro.so", "libplugin_phone.so", "libuptsmaddon.so", "libuptsmaddonmi.so"]
    for so in list_so:
        so = os.path.join(SDK, channelSdkInfo["SDKName"], "ForLibs", "armeabi-v7a", so)
        if os.path.exists(so):
            os.remove(so)


def script_second(SDK, decompileDir, channelSdkInfo, new_game_channel_info, gameInfo):
    handle_same_name_package(decompileDir)


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


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


def handle_same_name_package(decompileDir):
    gf_1_path = os.path.join(decompileDir, "smali", "com", "gf.1")
    if not os.path.exists(gf_1_path):
        return

    # 把同名的GF包移走
    new_smali_path = gw_apk_tool.create_mutil_smali(decompileDir)
    source = os.path.join(decompileDir, "smali", "com")
    target = os.path.join(new_smali_path, "com")
    GF_path = os.path.join(source, "GF")
    if os.path.exists(GF_path):
        gw_apk_tool.move_package(source, target, ["GF"])

    # 更改gf.1成gf
    # gf_1_path = os.path.join(decompileDir, "smali", "com", "gf.1")
    gf_path = os.path.join(decompileDir, "smali", "com", "gf")
    if os.path.exists(gf_1_path):
        os.renames(gf_1_path, gf_path)


if __name__ == '__main__':
    ""
