UMCrash.smali
.class public Lcom/umeng/umcrash/UMCrash;
.super Ljava/lang/Object;
.source "UMCrash.java"
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lcom/umeng/umcrash/UMCrash$CrashClientImpl;
}
.end annotation
# static fields
.field public static final KEY_CALLBACK_PAGE_ACTION:Ljava/lang/String; = "um_action_log"
.field public static final KEY_CALLBACK_UMID:Ljava/lang/String; = "um_umid"
.field public static final KEY_HEADER_APPKEY:Ljava/lang/String; = "um_app_key"
.field public static final KEY_HEADER_CHANNEL:Ljava/lang/String; = "um_app_channel"
.field public static final KEY_HEADER_CRASH_VERSION:Ljava/lang/String; = "um_crash_sdk_version"
.field public static final KEY_HEADER_OS:Ljava/lang/String; = "um_os"
.field public static final KEY_HEADER_UMID:Ljava/lang/String; = "um_umid_header"
.field private static final TAG:Ljava/lang/String; = "UMCrash"
.field private static crashSdkVersion:Ljava/lang/String; = "v0.0.5"
.field private static isDebug:Z = true
.field private static isEncrypt:Z = false
.field private static isZip:Z = true
.field private static mArrayList:Ljava/util/ArrayList;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/ArrayList<",
"Ljava/lang/String;",
">;"
}
.end annotation
.end field
.field private static mContext:Landroid/content/Context;
.field private static pageArrayLock:Ljava/lang/Object;
# direct methods
.method static constructor <clinit>()V
.registers 2
.line 1
new-instance v0, Ljava/lang/Object;
invoke-direct {v0}, Ljava/lang/Object;-><init>()V
sput-object v0, Lcom/umeng/umcrash/UMCrash;->pageArrayLock:Ljava/lang/Object;
.line 2
new-instance v0, Ljava/util/ArrayList;
const/16 v1, 0xa
invoke-direct {v0, v1}, Ljava/util/ArrayList;-><init>(I)V
sput-object v0, Lcom/umeng/umcrash/UMCrash;->mArrayList:Ljava/util/ArrayList;
return-void
.end method
.method public constructor <init>()V
.registers 1
.line 1
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method static synthetic access$000()Ljava/lang/Object;
.registers 1
.line 1
sget-object v0, Lcom/umeng/umcrash/UMCrash;->pageArrayLock:Ljava/lang/Object;
return-object v0
.end method
.method static synthetic access$100()Ljava/util/ArrayList;
.registers 1
.line 1
sget-object v0, Lcom/umeng/umcrash/UMCrash;->mArrayList:Ljava/util/ArrayList;
return-object v0
.end method
.method static synthetic access$200()Z
.registers 1
.line 1
sget-boolean v0, Lcom/umeng/umcrash/UMCrash;->isDebug:Z
return v0
.end method
.method static synthetic access$300()Ljava/lang/String;
.registers 1
.line 1
sget-object v0, Lcom/umeng/umcrash/UMCrash;->TAG:Ljava/lang/String;
return-object v0
.end method
.method static synthetic access$400()Landroid/content/Context;
.registers 1
.line 1
sget-object v0, Lcom/umeng/umcrash/UMCrash;->mContext:Landroid/content/Context;
return-object v0
.end method
.method static synthetic access$500(Landroid/content/Context;)Ljava/lang/String;
.registers 1
.line 1
invoke-static {p0}, Lcom/umeng/umcrash/UMCrash;->getUMID(Landroid/content/Context;)Ljava/lang/String;
move-result-object p0
return-object p0
.end method
.method public static generateCustomLog(Ljava/lang/String;Ljava/lang/String;)V
.registers 7
const-string v0, "exception"
.line 13
invoke-static {p0}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z
move-result v1
if-nez v1, :cond_a7
invoke-static {p1}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z
move-result v1
if-eqz v1, :cond_10
goto/16 :goto_a7
.line 14
:cond_10
:try_start_10
new-instance v1, Lcom/uc/crashsdk/export/CustomLogInfo;
const/4 v2, 0x0
invoke-direct {v1, v2, v0}, Lcom/uc/crashsdk/export/CustomLogInfo;-><init>(Ljava/lang/StringBuffer;Ljava/lang/String;)V
.line 15
new-instance v2, Ljava/util/ArrayList;
invoke-direct {v2}, Ljava/util/ArrayList;-><init>()V
const-string v3, "um_umid"
.line 16
invoke-virtual {v2, v3}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
const-string v3, "um_action_log"
.line 17
invoke-virtual {v2, v3}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
.line 18
iput-object v2, v1, Lcom/uc/crashsdk/export/CustomLogInfo;->mCallbacks:Ljava/util/ArrayList;
.line 19
new-instance v2, Ljava/util/HashMap;
const/16 v3, 0x14
invoke-direct {v2, v3}, Ljava/util/HashMap;-><init>(I)V
const-string v3, "k_ct"
.line 20
invoke-interface {v2, v3, v0}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
const-string v0, "k_ac"
.line 21
invoke-interface {v2, v0, p1}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 22
new-instance p1, Ljava/lang/StringBuffer;
invoke-direct {p1}, Ljava/lang/StringBuffer;-><init>()V
.line 23
invoke-interface {v2}, Ljava/util/Map;->entrySet()Ljava/util/Set;
move-result-object v0
invoke-interface {v0}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
move-result-object v0
:goto_45
invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z
move-result v2
:try_end_49
.catch Ljava/lang/Throwable; {:try_start_10 .. :try_end_49} :catch_a6
const-string v3, "\n"
if-eqz v2, :cond_6e
:try_start_4d
invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v2
check-cast v2, Ljava/util/Map$Entry;
.line 24
invoke-interface {v2}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object;
move-result-object v4
check-cast v4, Ljava/lang/String;
invoke-virtual {p1, v4}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;
const-string v4, ":"
invoke-virtual {p1, v4}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;
invoke-interface {v2}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object;
move-result-object v2
check-cast v2, Ljava/lang/String;
invoke-virtual {p1, v2}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;
invoke-virtual {p1, v3}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;
goto :goto_45
.line 25
:cond_6e
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "Exception message:\nBack traces starts.\n"
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string p0, "Back traces ends."
invoke-virtual {v0, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p0
.line 26
invoke-static {p0}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z
move-result v0
if-nez v0, :cond_93
.line 27
invoke-virtual {p1, p0}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;
invoke-virtual {p1, v3}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;
.line 28
:cond_93
iput-object p1, v1, Lcom/uc/crashsdk/export/CustomLogInfo;->mData:Ljava/lang/StringBuffer;
.line 29
invoke-static {}, Lcom/uc/crashsdk/export/CrashApi;->getInstance()Lcom/uc/crashsdk/export/CrashApi;
move-result-object p0
if-nez p0, :cond_a3
.line 30
sget-object p0, Lcom/umeng/umcrash/UMCrash;->TAG:Ljava/lang/String;
const-string p1, "CrashApi is null, not init ."
invoke-static {p0, p1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
goto :goto_a6
.line 31
:cond_a3
invoke-virtual {p0, v1}, Lcom/uc/crashsdk/export/CrashApi;->generateCustomLog(Lcom/uc/crashsdk/export/CustomLogInfo;)Z
:try_end_a6
.catch Ljava/lang/Throwable; {:try_start_4d .. :try_end_a6} :catch_a6
:catch_a6
:goto_a6
return-void
.line 32
:cond_a7
:goto_a7
sget-object p0, Lcom/umeng/umcrash/UMCrash;->TAG:Ljava/lang/String;
const-string p1, "generate custom log failed ! e is null or type is empty"
invoke-static {p0, p1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
return-void
.end method
.method public static generateCustomLog(Ljava/lang/Throwable;Ljava/lang/String;)V
.registers 3
if-eqz p0, :cond_39
.line 1
invoke-static {p1}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z
move-result v0
if-eqz v0, :cond_9
goto :goto_39
.line 2
:cond_9
:try_start_9
new-instance v0, Lcom/umeng/umcrash/UMCustomLogInfoBuilder;
invoke-direct {v0, p1}, Lcom/umeng/umcrash/UMCustomLogInfoBuilder;-><init>(Ljava/lang/String;)V
.line 3
invoke-virtual {v0, p0}, Lcom/umeng/umcrash/UMCustomLogInfoBuilder;->stack(Ljava/lang/Throwable;)Lcom/umeng/umcrash/UMCustomLogInfoBuilder;
move-result-object p0
.line 4
invoke-virtual {p0}, Lcom/umeng/umcrash/UMCustomLogInfoBuilder;->build()Lcom/uc/crashsdk/export/CustomLogInfo;
move-result-object p0
.line 5
new-instance p1, Ljava/util/ArrayList;
invoke-direct {p1}, Ljava/util/ArrayList;-><init>()V
const-string v0, "um_umid"
.line 6
invoke-virtual {p1, v0}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
const-string v0, "um_action_log"
.line 7
invoke-virtual {p1, v0}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
.line 8
iput-object p1, p0, Lcom/uc/crashsdk/export/CustomLogInfo;->mCallbacks:Ljava/util/ArrayList;
.line 9
invoke-static {}, Lcom/uc/crashsdk/export/CrashApi;->getInstance()Lcom/uc/crashsdk/export/CrashApi;
move-result-object p1
if-nez p1, :cond_35
.line 10
sget-object p0, Lcom/umeng/umcrash/UMCrash;->TAG:Ljava/lang/String;
const-string p1, "CrashApi is null, not init ."
invoke-static {p0, p1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
goto :goto_38
.line 11
:cond_35
invoke-virtual {p1, p0}, Lcom/uc/crashsdk/export/CrashApi;->generateCustomLog(Lcom/uc/crashsdk/export/CustomLogInfo;)Z
:try_end_38
.catch Ljava/lang/Throwable; {:try_start_9 .. :try_end_38} :catch_38
:catch_38
:goto_38
return-void
.line 12
:cond_39
:goto_39
sget-object p0, Lcom/umeng/umcrash/UMCrash;->TAG:Ljava/lang/String;
const-string p1, "generate custom log failed ! e is null or type is empty"
invoke-static {p0, p1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
return-void
.end method
.method private static declared-synchronized getUMID(Landroid/content/Context;)Ljava/lang/String;
.registers 9
const-class v0, Lcom/umeng/umcrash/UMCrash;
monitor-enter v0
const/4 v1, 0x0
if-nez p0, :cond_8
.line 1
monitor-exit v0
return-object v1
:cond_8
const-string v2, "com.umeng.commonsdk.UMConfigure"
.line 2
:try_start_a
invoke-static {v2}, Ljava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class;
move-result-object v2
:try_end_e
.catch Ljava/lang/ClassNotFoundException; {:try_start_a .. :try_end_e} :catch_11
.catchall {:try_start_a .. :try_end_e} :catchall_f
goto :goto_12
:catchall_f
move-exception p0
goto :goto_36
:catch_11
move-object v2, v1
:goto_12
if-eqz v2, :cond_38
const/4 v3, 0x0
const/4 v4, 0x1
:try_start_16
const-string v5, "getUMIDString"
.line 3
new-array v6, v4, [Ljava/lang/Class;
const-class v7, Landroid/content/Context;
aput-object v7, v6, v3
invoke-virtual {v2, v5, v6}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
move-result-object v2
:try_end_22
.catch Ljava/lang/NoSuchMethodException; {:try_start_16 .. :try_end_22} :catch_23
.catchall {:try_start_16 .. :try_end_22} :catchall_f
goto :goto_24
:catch_23
move-object v2, v1
:goto_24
if-eqz v2, :cond_38
.line 4
:try_start_26
new-array v4, v4, [Ljava/lang/Object;
aput-object p0, v4, v3
invoke-virtual {v2, v1, v4}, Ljava/lang/reflect/Method;->invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
move-result-object p0
if-eqz p0, :cond_38
.line 5
invoke-virtual {p0}, Ljava/lang/Object;->toString()Ljava/lang/String;
move-result-object p0
:try_end_34
.catch Ljava/lang/IllegalAccessException; {:try_start_26 .. :try_end_34} :catch_38
.catch Ljava/lang/reflect/InvocationTargetException; {:try_start_26 .. :try_end_34} :catch_38
.catchall {:try_start_26 .. :try_end_34} :catchall_f
move-object v1, p0
goto :goto_38
:goto_36
monitor-exit v0
throw p0
.line 6
:catch_38
:cond_38
:goto_38
monitor-exit v0
return-object v1
.end method
.method public static init(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;)V
.registers 7
if-eqz p0, :cond_83
if-nez p1, :cond_6
goto/16 :goto_83
.line 1
:cond_6
sput-object p0, Lcom/umeng/umcrash/UMCrash;->mContext:Landroid/content/Context;
.line 2
:try_start_8
new-instance v0, Landroid/os/Bundle;
invoke-direct {v0}, Landroid/os/Bundle;-><init>()V
const-string v1, "mDebug"
.line 3
sget-boolean v2, Lcom/umeng/umcrash/UMCrash;->isDebug:Z
invoke-virtual {v0, v1, v2}, Landroid/os/Bundle;->putBoolean(Ljava/lang/String;Z)V
const-string v1, "mEncryptLog"
.line 4
sget-boolean v2, Lcom/umeng/umcrash/UMCrash;->isEncrypt:Z
invoke-virtual {v0, v1, v2}, Landroid/os/Bundle;->putBoolean(Ljava/lang/String;Z)V
const-string v1, "mZipLog"
.line 5
sget-boolean v2, Lcom/umeng/umcrash/UMCrash;->isZip:Z
invoke-virtual {v0, v1, v2}, Landroid/os/Bundle;->putBoolean(Ljava/lang/String;Z)V
const-string v1, "enableUnexpLog"
const/4 v2, 0x0
.line 6
invoke-virtual {v0, v1, v2}, Landroid/os/Bundle;->putBoolean(Ljava/lang/String;Z)V
.line 7
sget-boolean v1, Lcom/umeng/umcrash/UMCrash;->isDebug:Z
new-instance v2, Lcom/umeng/umcrash/UMCrash$CrashClientImpl;
const/4 v3, 0x0
invoke-direct {v2, v3}, Lcom/umeng/umcrash/UMCrash$CrashClientImpl;-><init>(Lcom/umeng/umcrash/UMCrash$1;)V
invoke-static {p0, p1, v1, v0, v2}, Lcom/uc/crashsdk/export/CrashApi;->createInstanceEx(Landroid/content/Context;Ljava/lang/String;ZLandroid/os/Bundle;Lcom/uc/crashsdk/export/ICrashClient;)Lcom/uc/crashsdk/export/CrashApi;
move-result-object v0
if-eqz v0, :cond_7b
const-string v1, "um_app_key"
.line 8
invoke-virtual {v0, v1, p1}, Lcom/uc/crashsdk/export/CrashApi;->addHeaderInfo(Ljava/lang/String;Ljava/lang/String;)V
const-string p1, "um_app_channel"
.line 9
invoke-virtual {v0, p1, p2}, Lcom/uc/crashsdk/export/CrashApi;->addHeaderInfo(Ljava/lang/String;Ljava/lang/String;)V
const-string p1, "um_os"
const-string p2, "android"
.line 10
invoke-virtual {v0, p1, p2}, Lcom/uc/crashsdk/export/CrashApi;->addHeaderInfo(Ljava/lang/String;Ljava/lang/String;)V
const-string p1, "um_crash_sdk_version"
.line 11
sget-object p2, Lcom/umeng/umcrash/UMCrash;->crashSdkVersion:Ljava/lang/String;
invoke-virtual {v0, p1, p2}, Lcom/uc/crashsdk/export/CrashApi;->addHeaderInfo(Ljava/lang/String;Ljava/lang/String;)V
const-string p1, "um_umid_header"
.line 12
invoke-static {p0}, Lcom/umeng/umcrash/UMCrash;->getUMID(Landroid/content/Context;)Ljava/lang/String;
move-result-object p2
invoke-virtual {v0, p1, p2}, Lcom/uc/crashsdk/export/CrashApi;->addHeaderInfo(Ljava/lang/String;Ljava/lang/String;)V
.line 13
instance-of p1, p0, Landroid/app/Application;
if-eqz p1, :cond_73
.line 14
check-cast p0, Landroid/app/Application;
new-instance p1, Lcom/umeng/umcrash/UMCrash$1;
invoke-direct {p1}, Lcom/umeng/umcrash/UMCrash$1;-><init>()V
invoke-virtual {p0, p1}, Landroid/app/Application;->registerActivityLifecycleCallbacks(Landroid/app/Application$ActivityLifecycleCallbacks;)V
const p0, 0x100011
const-string p1, "um_umid"
.line 15
invoke-virtual {v0, p1, p0}, Lcom/uc/crashsdk/export/CrashApi;->registerInfoCallback(Ljava/lang/String;I)I
const-string p1, "um_action_log"
.line 16
invoke-virtual {v0, p1, p0}, Lcom/uc/crashsdk/export/CrashApi;->registerInfoCallback(Ljava/lang/String;I)I
goto :goto_82
.line 17
:cond_73
sget-object p0, Lcom/umeng/umcrash/UMCrash;->TAG:Ljava/lang/String;
const-string p1, "context not instanceof application."
invoke-static {p0, p1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
goto :goto_82
.line 18
:cond_7b
sget-object p0, Lcom/umeng/umcrash/UMCrash;->TAG:Ljava/lang/String;
const-string p1, "create CrashAPI is null."
invoke-static {p0, p1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
:try_end_82
.catch Ljava/lang/Throwable; {:try_start_8 .. :try_end_82} :catch_82
:catch_82
:goto_82
return-void
.line 19
:cond_83
:goto_83
sget-object p0, Lcom/umeng/umcrash/UMCrash;->TAG:Ljava/lang/String;
const-string p1, "context is null or appkey is null, init failed."
invoke-static {p0, p1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
return-void
.end method
.method public static setDebug(Z)V
.registers 1
.line 1
sput-boolean p0, Lcom/umeng/umcrash/UMCrash;->isDebug:Z
return-void
.end method