|
@@ -0,0 +1,83 @@
|
|
|
|
|
+# -*- coding:utf-8 -*-
|
|
|
|
|
+import os
|
|
|
|
|
+import logging
|
|
|
|
|
+def script_last(workspace_sdk_dir, extract_dir, channel_sdk_info, new_game_channel_info, game_info):
|
|
|
|
|
+ print "script last snow"
|
|
|
|
|
+ # 修复酷派新sdk 3.0接口方法名改变登录后闪退bug
|
|
|
|
|
+ is_version_3_sdk = fix_coolpad_version_3_method_name_change_bug(extract_dir)
|
|
|
|
|
+ print u'is_version_3_sdk: ', is_version_3_sdk
|
|
|
|
|
+ if is_version_3_sdk:
|
|
|
|
|
+ fix_coolpad_version_3_login_fail_bug(extract_dir)
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+def fix_coolpad_version_3_method_name_change_bug(decompile_dir):
|
|
|
|
|
+ is_version_3_sdk = False
|
|
|
|
|
+ is_new_sdk_and_version_lt_version_3 = False
|
|
|
|
|
+ for dirpath, dirnames, filenames in os.walk(decompile_dir):
|
|
|
|
|
+ if ur'com\yulong\sdk\promoter' in dirpath and u'OnGameAuthListener.smali' in filenames:
|
|
|
|
|
+ auth_listener_path = os.path.join(dirpath, u'OnGameAuthListener.smali')
|
|
|
|
|
+ with open(auth_listener_path, u'r') as f:
|
|
|
|
|
+ smali_str_arr = f.read()
|
|
|
|
|
+ if u'onSuccess' in smali_str_arr:
|
|
|
|
|
+ is_version_3_sdk = True
|
|
|
|
|
+ if u'onResult' in smali_str_arr:
|
|
|
|
|
+ is_new_sdk_and_version_lt_version_3 = True
|
|
|
|
|
+ break
|
|
|
|
|
+ for dirpath, dirnames, filenames in os.walk(decompile_dir):
|
|
|
|
|
+ if ur'com\yulong\sdk\promoter' in dirpath and u'PromoterGameAuthApi$1.smali' in filenames:
|
|
|
|
|
+ smali_path = os.path.join(dirpath, u'PromoterGameAuthApi$1.smali')
|
|
|
|
|
+ print smali_path
|
|
|
|
|
+ with open(smali_path, u'r') as f:
|
|
|
|
|
+ smali_str_arr = f.readlines()
|
|
|
|
|
+ index_str = ur'onSuccess'
|
|
|
|
|
+ if is_new_sdk_and_version_lt_version_3:
|
|
|
|
|
+ index_str = ur'onSuccess'
|
|
|
|
|
+ elif is_version_3_sdk:
|
|
|
|
|
+ index_str = ur'onResult'
|
|
|
|
|
+ for line in smali_str_arr:
|
|
|
|
|
+ if index_str in line:
|
|
|
|
|
+ print line
|
|
|
|
|
+ index = smali_str_arr.index(line)
|
|
|
|
|
+ if is_new_sdk_and_version_lt_version_3:
|
|
|
|
|
+ smali_str_arr[index] = line.replace(index_str, u'onResult')
|
|
|
|
|
+ elif is_version_3_sdk:
|
|
|
|
|
+ smali_str_arr[index] = line.replace(index_str, u'onSuccess')
|
|
|
|
|
+ print smali_str_arr[index]
|
|
|
|
|
+ break
|
|
|
|
|
+ with open(smali_path, u'w') as f:
|
|
|
|
|
+ f.write(u''.join(smali_str_arr))
|
|
|
|
|
+ break
|
|
|
|
|
+ return is_version_3_sdk
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+def fix_coolpad_version_3_login_fail_bug(decompile_dir_path):
|
|
|
|
|
+ insert_str_list = [
|
|
|
|
|
+ u'\n\t.locals 0\n\n',
|
|
|
|
|
+ u'\treturn-void\n\n']
|
|
|
|
|
+ for dirpath, dirnames, filenames in os.walk(decompile_dir_path):
|
|
|
|
|
+ if ur'com\yulong\account\auth' in dirpath and u'AuthCodeApiImpl.smali' in filenames:
|
|
|
|
|
+ smali_path = os.path.join(dirpath, u'AuthCodeApiImpl.smali')
|
|
|
|
|
+ with open(smali_path, u'r') as f:
|
|
|
|
|
+ smali_str_arr = f.readlines()
|
|
|
|
|
+ index_str = u'.method private returnAuthError(Lcom/yulong/account/common/info/ErrorInfo;)V'
|
|
|
|
|
+ end_method_str = u'.end method'
|
|
|
|
|
+ insert_str = u''.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 u'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 u'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, u'w') as f:
|
|
|
|
|
+ f.write(u''.join(smali_str_arr))
|
|
|
|
|
+ break
|
|
|
|
|
+
|