package com.tencent.bugly.agent; import android.app.Activity; import android.content.Context; import android.os.Handler; import android.os.Looper; import android.os.Process; import android.text.TextUtils; import android.util.Log; import java.lang.ref.WeakReference; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.Locale; /* loaded from: classes.dex */ public class GameAgent { private static final String CLASS_COCOS_ACTIVITY = "org.cocos2dx.lib.Cocos2dxActivity"; private static final String CLASS_UNITY_PLAYER = "com.unity3d.player.UnityPlayer"; private static final String CRASH_REPORT_CLASS_SUFFIX = "crashreport.CrashReport"; public static final int GAME_TYPE_COCOS = 1; public static final int GAME_TYPE_UNITY = 2; public static final int GAME_TYPE_UNKNOWN = 0; private static final int LOG_LEVEL_DEBUG = 1; private static final int LOG_LEVEL_ERROR = 4; private static final int LOG_LEVEL_INFO = 2; private static final int LOG_LEVEL_VERBOSE = 0; private static final int LOG_LEVEL_WARN = 3; private static final String LOG_TAG = "CrashReport-GameAgent"; private static final String OLD_STRATEGY_CLASS_SUFFIX = "crashreport.CrashReport$UserStrategy"; private static final String STRATEGY_CLASS_SUFFIX = "BuglyStrategy"; private static final int TYPE_COCOS2DX_JS_CRASH = 5; private static final int TYPE_COCOS2DX_LUA_CRASH = 6; private static final int TYPE_U3D_CRASH = 4; private static final String VERSION = "3.2"; private static boolean hasGuessed = false; private static WeakReference sActivity = null; private static String sAppChannel = null; private static String sAppVersion = null; private static WeakReference sContext = null; private static int sGameType = 0; private static Handler sHandler = null; private static boolean sIsDebug = false; private static String sUserId = null; private static String sdkPackageName = "com.tencent.bugly"; private static class Reflection { /* JADX INFO: Access modifiers changed from: private */ public static Object b(String str, String str2, Object obj) { try { Field declaredField = Class.forName(str).getDeclaredField(str2); declaredField.setAccessible(true); return declaredField.get(obj); } catch (ClassNotFoundException e) { e.printStackTrace(); return null; } catch (IllegalAccessException e2) { e2.printStackTrace(); return null; } catch (NoSuchFieldException e3) { e3.printStackTrace(); return null; } } /* JADX INFO: Access modifiers changed from: private */ public static Object b(String str, String str2, Object[] objArr, Class... clsArr) { try { Method declaredMethod = Class.forName(str).getDeclaredMethod(str2, clsArr); declaredMethod.setAccessible(true); return declaredMethod.invoke(null, objArr); } catch (ClassNotFoundException e) { e.printStackTrace(); return null; } catch (IllegalAccessException e2) { e2.printStackTrace(); return null; } catch (NoSuchMethodException e3) { e3.printStackTrace(); return null; } catch (InvocationTargetException e4) { e4.printStackTrace(); return null; } catch (Exception e5) { e5.printStackTrace(); return null; } } /* JADX INFO: Access modifiers changed from: private */ public static Object b(String str, Object[] objArr, Class... clsArr) { try { Class cls = Class.forName(str); if (objArr == null) { return cls.newInstance(); } return cls.getConstructor(clsArr).newInstance(objArr); } catch (ClassNotFoundException e) { e.printStackTrace(); return null; } catch (IllegalAccessException e2) { e2.printStackTrace(); return null; } catch (InstantiationException e3) { e3.printStackTrace(); return null; } catch (NoSuchMethodException e4) { e4.printStackTrace(); return null; } catch (InvocationTargetException e5) { e5.printStackTrace(); return null; } catch (Exception e6) { e6.printStackTrace(); return null; } } } /* JADX INFO: Access modifiers changed from: private */ public static String convertToCanonicalName(String str) { StringBuilder sb = new StringBuilder(); if (sdkPackageName == null) { sdkPackageName = "com.tencent.bugly"; } sb.append(sdkPackageName); sb.append("."); sb.append(str); return sb.toString(); } /* JADX INFO: Access modifiers changed from: private */ public static void delayExit(long j) { long max = Math.max(0L, j); Handler handler = sHandler; if (handler != null) { handler.postDelayed(new Runnable() { // from class: com.tencent.bugly.agent.GameAgent.1 @Override // java.lang.Runnable public void run() { GameAgent.exitApplication(); } }, max); return; } try { Thread.sleep(max); exitApplication(); } catch (InterruptedException e) { e.printStackTrace(); } } /* JADX INFO: Access modifiers changed from: private */ public static void exitApplication() { int myPid = Process.myPid(); printLog(3, String.format(Locale.US, "Exit application by kill process[%d]", Integer.valueOf(myPid))); Process.killProcess(myPid); } private static Activity getActivity() { Activity cocosActivity; WeakReference weakReference = sActivity; if (weakReference == null || weakReference.get() == null) { int i = sGameType; if (i == 1) { cocosActivity = getCocosActivity(); } else if (i != 2) { Log.w(LOG_TAG, "Game type has not been set."); cocosActivity = guessActivity(); } else { cocosActivity = getUnityActivity(); } if (cocosActivity != null) { sActivity = new WeakReference<>(cocosActivity); } } WeakReference weakReference2 = sActivity; if (weakReference2 != null) { return weakReference2.get(); } return null; } /* JADX INFO: Access modifiers changed from: private */ public static Context getApplicationContext() { Activity activity; WeakReference weakReference = sContext; if ((weakReference == null || weakReference.get() == null) && (activity = getActivity()) != null) { sContext = new WeakReference<>(activity.getApplicationContext()); } WeakReference weakReference2 = sContext; if (weakReference2 != null) { return weakReference2.get(); } return null; } public static Activity getCocosActivity() { try { Object b = Reflection.b(CLASS_COCOS_ACTIVITY, "getContext", null, new Class[0]); if (b != null && (b instanceof Activity)) { return (Activity) b; } } catch (Exception unused) { Log.w(LOG_TAG, "Failed to get activity of Cocos."); } return null; } public static Activity getUnityActivity() { try { Object b = Reflection.b(CLASS_UNITY_PLAYER, "currentActivity", (Object) null); if (b != null && (b instanceof Activity)) { return (Activity) b; } } catch (Exception unused) { Log.w(LOG_TAG, "Failed to get activity of Unity."); } return null; } public static String getVersion() { return VERSION; } private static Activity guessActivity() { if (hasGuessed) { return null; } hasGuessed = true; Activity activity = sGameType != 0 ? getActivity() : null; if (activity == null) { sGameType = 1; activity = getActivity(); } if (activity == null) { sGameType = 2; activity = getActivity(); } if (activity == null) { sGameType = 0; } return activity; } public static void initCrashReport(String str, boolean z) { setLogEnable(z); initCrashReport(str, sAppChannel, sAppVersion, sUserId, 0L); } private static Object newStrategy(Context context, String str, String str2, long j) { Object b; if (context != null && ((!TextUtils.isEmpty(str) || !TextUtils.isEmpty(str2)) && (b = Reflection.b(convertToCanonicalName(OLD_STRATEGY_CLASS_SUFFIX), new Object[]{context}, (Class[]) new Class[]{Context.class})) != null)) { try { Class cls = Class.forName(convertToCanonicalName(STRATEGY_CLASS_SUFFIX)); cls.getDeclaredMethod("setAppChannel", String.class).invoke(b, str); cls.getDeclaredMethod("setAppVersion", String.class).invoke(b, str2); cls.getDeclaredMethod("setAppReportDelay", Long.TYPE).invoke(b, Long.valueOf(j)); return b; } catch (IllegalAccessException e) { e.printStackTrace(); } catch (IllegalArgumentException e2) { e2.printStackTrace(); } catch (NoSuchMethodException e3) { e3.printStackTrace(); } catch (InvocationTargetException e4) { e4.printStackTrace(); } catch (Exception e5) { e5.printStackTrace(); } } return null; } private static void postCocosJsException(final int i, final String str, final String str2, final String str3, final boolean z) { runTaskInUiThread(new Runnable() { // from class: com.tencent.bugly.agent.GameAgent.12 @Override // java.lang.Runnable public void run() { Reflection.b(GameAgent.convertToCanonicalName("crashreport.inner.InnerApi"), "postCocos2dxCrashAsync", new Object[]{Integer.valueOf(i), str, str2, str3}, Integer.TYPE, String.class, String.class, String.class); if (z) { GameAgent.delayExit(3000L); } } }); } private static void postCocosLuaException(final int i, String str, final String str2, String str3, final boolean z) { final String str4; try { if (str3.startsWith("stack traceback")) { str3 = str3.substring(str3.indexOf("\n") + 1, str3.length()).trim(); } int indexOf = str3.indexOf("\n"); if (indexOf > 0) { str3 = str3.substring(indexOf + 1, str3.length()); } int indexOf2 = str3.indexOf("\n"); String substring = indexOf2 > 0 ? str3.substring(0, indexOf2) : str3; int indexOf3 = substring.indexOf("]:"); if (str == null || str.length() == 0) { str = indexOf3 != -1 ? substring.substring(0, indexOf3 + 1) : str2; } } catch (Throwable unused) { if (str == null || str.length() == 0) { str4 = str2; } } str4 = str; final String str5 = str3; runTaskInUiThread(new Runnable() { // from class: com.tencent.bugly.agent.GameAgent.11 @Override // java.lang.Runnable public void run() { Reflection.b(GameAgent.convertToCanonicalName("crashreport.inner.InnerApi"), "postCocos2dxCrashAsync", new Object[]{Integer.valueOf(i), str4, str2, str5}, Integer.TYPE, String.class, String.class, String.class); if (z) { GameAgent.delayExit(3000L); } } }); } public static void postException(int i, String str, String str2, String str3, boolean z) { if (i == 4) { postUnityException(str, str2, str3, z); return; } if (i == 5) { postCocosJsException(i, str, str2, str3, z); return; } if (i == 6) { postCocosLuaException(i, str, str2, str3, z); return; } printLog(4, "The category of exception posted is unknown: " + String.valueOf(i)); } private static void postUnityException(final String str, final String str2, final String str3, final boolean z) { runTaskInUiThread(new Runnable() { // from class: com.tencent.bugly.agent.GameAgent.13 @Override // java.lang.Runnable public void run() { Reflection.b(GameAgent.convertToCanonicalName("crashreport.inner.InnerApi"), "postU3dCrashAsync", new Object[]{str, str2, str3}, String.class, String.class, String.class); if (z) { GameAgent.delayExit(3000L); } } }); } public static void printLog(String str) { if (TextUtils.isEmpty(str)) { return; } if (str.startsWith("")) { printLog(2, str); return; } if (str.startsWith("")) { printLog(1, str); return; } if (str.startsWith("")) { printLog(2, str); return; } if (str.startsWith("")) { printLog(3, str); return; } if (str.startsWith("")) { printLog(3, str); return; } if (str.startsWith("")) { printLog(4, str); } else if (str.startsWith("")) { printLog(4, str); } else { printLog(0, str); } } public static void putUserData(final String str, final String str2) { if (TextUtils.isEmpty(str) || TextUtils.isEmpty(str2)) { return; } runTaskInUiThread(new Runnable() { // from class: com.tencent.bugly.agent.GameAgent.7 @Override // java.lang.Runnable public void run() { Reflection.b(GameAgent.convertToCanonicalName(GameAgent.CRASH_REPORT_CLASS_SUFFIX), "putUserData", new Object[]{GameAgent.getApplicationContext(), str, str2}, Context.class, String.class, String.class); } }); } public static void removeUserData(final String str) { if (TextUtils.isEmpty(str)) { return; } runTaskInUiThread(new Runnable() { // from class: com.tencent.bugly.agent.GameAgent.8 @Override // java.lang.Runnable public void run() { Reflection.b(GameAgent.convertToCanonicalName(GameAgent.CRASH_REPORT_CLASS_SUFFIX), "removeUserData", new Object[]{GameAgent.getApplicationContext(), str}, Context.class, String.class); } }); } private static void runTaskInUiThread(Runnable runnable) { Activity activity = getActivity(); if (activity != null) { activity.runOnUiThread(runnable); } else { new Thread(runnable).start(); } } public static void setAppChannel(final String str) { if (TextUtils.isEmpty(str)) { return; } sAppChannel = str; runTaskInUiThread(new Runnable() { // from class: com.tencent.bugly.agent.GameAgent.4 @Override // java.lang.Runnable public void run() { Reflection.b(GameAgent.convertToCanonicalName(GameAgent.CRASH_REPORT_CLASS_SUFFIX), "setAppChannel", new Object[]{GameAgent.getApplicationContext(), str}, Context.class, String.class); } }); } public static void setAppVersion(final String str) { if (TextUtils.isEmpty(str)) { return; } sAppVersion = str; runTaskInUiThread(new Runnable() { // from class: com.tencent.bugly.agent.GameAgent.3 @Override // java.lang.Runnable public void run() { Reflection.b(GameAgent.convertToCanonicalName(GameAgent.CRASH_REPORT_CLASS_SUFFIX), "setAppVersion", new Object[]{GameAgent.getApplicationContext(), str}, Context.class, String.class); } }); } public static void setGameType(int i) { sGameType = i; } public static void setLog(int i, final String str, final String str2) { if (TextUtils.isEmpty(str)) { return; } final String str3 = i != 0 ? i != 1 ? i != 2 ? i != 3 ? i != 4 ? null : "e" : "w" : "i" : "d" : "v"; if (str3 != null) { runTaskInUiThread(new Runnable() { // from class: com.tencent.bugly.agent.GameAgent.10 @Override // java.lang.Runnable public void run() { Reflection.b(GameAgent.convertToCanonicalName("crashreport.BuglyLog"), str3, new Object[]{str, str2}, String.class, String.class); } }); } } public static void setLogEnable(boolean z) { sIsDebug = z; } public static void setSdkConfig(final String str, final String str2) { if (TextUtils.isEmpty(str) || TextUtils.isEmpty(str2)) { return; } runTaskInUiThread(new Runnable() { // from class: com.tencent.bugly.agent.GameAgent.9 @Override // java.lang.Runnable public void run() { Reflection.b(GameAgent.convertToCanonicalName(GameAgent.CRASH_REPORT_CLASS_SUFFIX), "putSdkData", new Object[]{GameAgent.getApplicationContext(), "SDK_" + str, str2}, Context.class, String.class, String.class); } }); } public static void setSdkPackageName(String str) { if (TextUtils.isEmpty(str)) { return; } sdkPackageName = str; } public static void setUserId(final String str) { if (TextUtils.isEmpty(str)) { return; } sUserId = str; runTaskInUiThread(new Runnable() { // from class: com.tencent.bugly.agent.GameAgent.5 @Override // java.lang.Runnable public void run() { Reflection.b(GameAgent.convertToCanonicalName(GameAgent.CRASH_REPORT_CLASS_SUFFIX), "setUserId", new Object[]{GameAgent.getApplicationContext(), str}, Context.class, String.class); } }); } public static void setUserSceneTag(final int i) { runTaskInUiThread(new Runnable() { // from class: com.tencent.bugly.agent.GameAgent.6 @Override // java.lang.Runnable public void run() { Reflection.b(GameAgent.convertToCanonicalName(GameAgent.CRASH_REPORT_CLASS_SUFFIX), "setUserSceneTag", new Object[]{GameAgent.getApplicationContext(), Integer.valueOf(i)}, Context.class, Integer.TYPE); } }); } private static void initCrashReport(final String str, String str2, String str3, final String str4, long j) { final Context applicationContext = getApplicationContext(); if (applicationContext == null) { printLog(4, "Context is null. bugly initialize terminated."); } else { if (TextUtils.isEmpty(str)) { printLog(4, "Please input appid when initCrashReport."); return; } sHandler = new Handler(Looper.getMainLooper()); final Object newStrategy = newStrategy(applicationContext, str2, str3, j); runTaskInUiThread(new Runnable() { // from class: com.tencent.bugly.agent.GameAgent.2 /* JADX WARN: Removed duplicated region for block: B:9:0x0058 */ @Override // java.lang.Runnable /* Code decompiled incorrectly, please refer to instructions dump. To view partially-correct code enable 'Show inconsistent code' option in preferences */ public void run() { /* r12 = this; boolean r0 = com.tencent.bugly.agent.GameAgent.access$400() java.lang.Object r1 = r1 java.lang.String r2 = "initCrashReport" java.lang.String r3 = "crashreport.CrashReport" r4 = 2 r5 = 3 r6 = 1 r7 = 0 if (r1 == 0) goto L55 r1 = 0 java.lang.String r8 = "crashreport.CrashReport$UserStrategy" java.lang.String r8 = com.tencent.bugly.agent.GameAgent.access$500(r8) // Catch: java.lang.Exception -> L1c java.lang.ClassNotFoundException -> L21 java.lang.Class r1 = java.lang.Class.forName(r8) // Catch: java.lang.Exception -> L1c java.lang.ClassNotFoundException -> L21 goto L25 L1c: r8 = move-exception r8.printStackTrace() goto L25 L21: r8 = move-exception r8.printStackTrace() L25: if (r1 == 0) goto L55 java.lang.String r8 = com.tencent.bugly.agent.GameAgent.access$500(r3) r9 = 4 java.lang.Object[] r10 = new java.lang.Object[r9] android.content.Context r11 = r2 r10[r7] = r11 java.lang.String r11 = r3 r10[r6] = r11 java.lang.Boolean r11 = java.lang.Boolean.valueOf(r0) r10[r4] = r11 java.lang.Object r11 = r1 r10[r5] = r11 java.lang.Class[] r9 = new java.lang.Class[r9] java.lang.Class r11 = android.content.Context.class r9[r7] = r11 java.lang.Class r11 = java.lang.String.class r9[r6] = r11 java.lang.Class r11 = java.lang.Boolean.TYPE r9[r4] = r11 r9[r5] = r1 com.tencent.bugly.agent.GameAgent.Reflection.a(r8, r2, r10, r9) r1 = 1 goto L56 L55: r1 = 0 L56: if (r1 != 0) goto L7d java.lang.String r1 = com.tencent.bugly.agent.GameAgent.access$500(r3) java.lang.Object[] r3 = new java.lang.Object[r5] android.content.Context r8 = r2 r3[r7] = r8 java.lang.String r8 = r3 r3[r6] = r8 java.lang.Boolean r0 = java.lang.Boolean.valueOf(r0) r3[r4] = r0 java.lang.Class[] r0 = new java.lang.Class[r5] java.lang.Class r5 = android.content.Context.class r0[r7] = r5 java.lang.Class r5 = java.lang.String.class r0[r6] = r5 java.lang.Class r5 = java.lang.Boolean.TYPE r0[r4] = r5 com.tencent.bugly.agent.GameAgent.Reflection.a(r1, r2, r3, r0) L7d: java.lang.String r0 = r4 com.tencent.bugly.agent.GameAgent.setUserId(r0) return */ throw new UnsupportedOperationException("Method not decompiled: com.tencent.bugly.agent.GameAgent.AnonymousClass2.run():void"); } }); } } private static void printLog(int i, String str) { setLog(i, LOG_TAG, str); } }