m.smali
.class public final Lxcrash/m;
.super Ljava/lang/Object;
.source "SourceFile"
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lxcrash/m$a;
}
.end annotation
# static fields
.field private static a:Z = false
.field private static b:Ljava/lang/String;
.field private static c:Ljava/lang/String;
.field private static d:Ljava/lang/String;
.field private static e:Lxcrash/h;
# direct methods
.method static constructor <clinit>()V
.registers 1
.line 40
new-instance v0, Lxcrash/c;
invoke-direct {v0}, Lxcrash/c;-><init>()V
sput-object v0, Lxcrash/m;->e:Lxcrash/h;
return-void
.end method
.method public static declared-synchronized a(Landroid/content/Context;Lxcrash/m$a;)I
.registers 37
move-object/from16 v1, p1
const-class v2, Lxcrash/m;
monitor-enter v2
.line 73
:try_start_5
sget-boolean v0, Lxcrash/m;->a:Z
:try_end_7
.catchall {:try_start_5 .. :try_end_7} :catchall_262
const/4 v3, 0x0
if-eqz v0, :cond_c
.line 74
monitor-exit v2
return v3
:cond_c
const/4 v4, 0x1
.line 76
:try_start_d
sput-boolean v4, Lxcrash/m;->a:Z
:try_end_f
.catchall {:try_start_d .. :try_end_f} :catchall_262
if-nez p0, :cond_14
const/4 v0, -0x1
.line 79
monitor-exit v2
return v0
.line 83
:cond_14
:try_start_14
invoke-virtual/range {p0 .. p0}, Landroid/content/Context;->getApplicationContext()Landroid/content/Context;
move-result-object v0
if-eqz v0, :cond_1c
move-object v6, v0
goto :goto_1e
:cond_1c
move-object/from16 v6, p0
.line 94
:goto_1e
iget-object v0, v1, Lxcrash/m$a;->d:Lxcrash/h;
if-eqz v0, :cond_26
.line 95
iget-object v0, v1, Lxcrash/m$a;->d:Lxcrash/h;
sput-object v0, Lxcrash/m;->e:Lxcrash/h;
.line 99
:cond_26
invoke-virtual {v6}, Landroid/content/Context;->getPackageName()Ljava/lang/String;
move-result-object v0
.line 101
sput-object v0, Lxcrash/m;->b:Ljava/lang/String;
invoke-static {v0}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z
move-result v0
if-eqz v0, :cond_36
const-string v0, "unknown"
.line 102
sput-object v0, Lxcrash/m;->b:Ljava/lang/String;
.line 106
:cond_36
iget-object v0, v1, Lxcrash/m$a;->a:Ljava/lang/String;
invoke-static {v0}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z
move-result v0
if-eqz v0, :cond_44
.line 107
invoke-static {v6}, Lxcrash/l;->a(Landroid/content/Context;)Ljava/lang/String;
move-result-object v0
iput-object v0, v1, Lxcrash/m$a;->a:Ljava/lang/String;
.line 109
:cond_44
iget-object v0, v1, Lxcrash/m$a;->a:Ljava/lang/String;
sput-object v0, Lxcrash/m;->c:Ljava/lang/String;
.line 112
iget-object v0, v1, Lxcrash/m$a;->b:Ljava/lang/String;
invoke-static {v0}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z
move-result v0
if-eqz v0, :cond_67
.line 113
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v6}, Landroid/content/Context;->getFilesDir()Ljava/io/File;
move-result-object v5
invoke-virtual {v0, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
const-string v5, "/tombstones"
invoke-virtual {v0, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
iput-object v0, v1, Lxcrash/m$a;->b:Ljava/lang/String;
.line 115
:cond_67
iget-object v0, v1, Lxcrash/m$a;->b:Ljava/lang/String;
sput-object v0, Lxcrash/m;->d:Ljava/lang/String;
.line 118
invoke-static {}, Landroid/os/Process;->myPid()I
move-result v5
.line 120
iget-boolean v0, v1, Lxcrash/m$a;->h:Z
if-nez v0, :cond_7a
iget-boolean v0, v1, Lxcrash/m$a;->H:Z
if-eqz v0, :cond_78
goto :goto_7a
:cond_78
const/4 v8, 0x0
goto :goto_7f
.line 121
:cond_7a
:goto_7a
invoke-static {v6, v5}, Lxcrash/l;->a(Landroid/content/Context;I)Ljava/lang/String;
move-result-object v0
move-object v8, v0
.line 125
:goto_7f
invoke-static {}, Lxcrash/e;->a()Lxcrash/e;
move-result-object v9
iget-object v10, v1, Lxcrash/m$a;->b:Ljava/lang/String;
iget v11, v1, Lxcrash/m$a;->j:I
iget v12, v1, Lxcrash/m$a;->v:I
iget v13, v1, Lxcrash/m$a;->K:I
iget v14, v1, Lxcrash/m$a;->f:I
iget v15, v1, Lxcrash/m$a;->g:I
iget v0, v1, Lxcrash/m$a;->c:I
move/from16 v16, v0
invoke-virtual/range {v9 .. v16}, Lxcrash/e;->a(Ljava/lang/String;IIIIII)V
.line 134
iget-boolean v0, v1, Lxcrash/m$a;->h:Z
if-nez v0, :cond_a2
iget-boolean v0, v1, Lxcrash/m$a;->t:Z
if-nez v0, :cond_a2
iget-boolean v0, v1, Lxcrash/m$a;->H:Z
if-eqz v0, :cond_bc
.line 135
:cond_a2
instance-of v0, v6, Landroid/app/Application;
if-eqz v0, :cond_bc
.line 136
invoke-static {}, Lxcrash/a;->a()Lxcrash/a;
move-result-object v0
move-object v9, v6
check-cast v9, Landroid/app/Application;
.line 1048
new-instance v10, Ljava/util/LinkedList;
invoke-direct {v10}, Ljava/util/LinkedList;-><init>()V
iput-object v10, v0, Lxcrash/a;->a:Ljava/util/LinkedList;
.line 1050
new-instance v10, Lxcrash/a$1;
invoke-direct {v10, v0}, Lxcrash/a$1;-><init>(Lxcrash/a;)V
invoke-virtual {v9, v10}, Landroid/app/Application;->registerActivityLifecycleCallbacks(Landroid/app/Application$ActivityLifecycleCallbacks;)V
.line 141
:cond_bc
iget-boolean v0, v1, Lxcrash/m$a;->h:Z
if-eqz v0, :cond_12d
.line 142
invoke-static {}, Lxcrash/i;->a()Lxcrash/i;
move-result-object v0
sget-object v9, Lxcrash/m;->b:Ljava/lang/String;
iget-object v10, v1, Lxcrash/m$a;->a:Ljava/lang/String;
iget-object v11, v1, Lxcrash/m$a;->b:Ljava/lang/String;
iget-boolean v12, v1, Lxcrash/m$a;->i:Z
iget v13, v1, Lxcrash/m$a;->k:I
iget v14, v1, Lxcrash/m$a;->l:I
iget v15, v1, Lxcrash/m$a;->m:I
iget-boolean v3, v1, Lxcrash/m$a;->n:Z
iget-boolean v4, v1, Lxcrash/m$a;->o:Z
iget-boolean v7, v1, Lxcrash/m$a;->p:Z
move-object/from16 v18, v6
iget v6, v1, Lxcrash/m$a;->q:I
move/from16 v19, v6
iget-object v6, v1, Lxcrash/m$a;->r:[Ljava/lang/String;
move-object/from16 v20, v6
iget-object v6, v1, Lxcrash/m$a;->s:Lxcrash/f;
.line 2075
iput v5, v0, Lxcrash/i;->a:I
.line 2076
invoke-static {v8}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z
move-result v21
if-eqz v21, :cond_f5
const-string v21, "unknown"
move-object/from16 v34, v21
move-object/from16 v21, v8
move-object/from16 v8, v34
goto :goto_f7
:cond_f5
move-object/from16 v21, v8
:goto_f7
iput-object v8, v0, Lxcrash/i;->b:Ljava/lang/String;
.line 2077
iput-object v9, v0, Lxcrash/i;->c:Ljava/lang/String;
.line 2078
iput-object v10, v0, Lxcrash/i;->d:Ljava/lang/String;
.line 2079
iput-boolean v12, v0, Lxcrash/i;->e:Z
.line 2080
iput-object v11, v0, Lxcrash/i;->f:Ljava/lang/String;
.line 2081
iput v13, v0, Lxcrash/i;->g:I
.line 2082
iput v14, v0, Lxcrash/i;->h:I
.line 2083
iput v15, v0, Lxcrash/i;->i:I
.line 2084
iput-boolean v3, v0, Lxcrash/i;->j:Z
.line 2085
iput-boolean v4, v0, Lxcrash/i;->k:Z
.line 2086
iput-boolean v7, v0, Lxcrash/i;->l:Z
move/from16 v3, v19
.line 2087
iput v3, v0, Lxcrash/i;->m:I
move-object/from16 v3, v20
.line 2088
iput-object v3, v0, Lxcrash/i;->n:[Ljava/lang/String;
.line 2089
iput-object v6, v0, Lxcrash/i;->o:Lxcrash/f;
.line 2090
invoke-static {}, Ljava/lang/Thread;->getDefaultUncaughtExceptionHandler()Ljava/lang/Thread$UncaughtExceptionHandler;
move-result-object v3
iput-object v3, v0, Lxcrash/i;->p:Ljava/lang/Thread$UncaughtExceptionHandler;
:try_end_11d
.catchall {:try_start_14 .. :try_end_11d} :catchall_262
.line 2093
:try_start_11d
invoke-static {v0}, Ljava/lang/Thread;->setDefaultUncaughtExceptionHandler(Ljava/lang/Thread$UncaughtExceptionHandler;)V
:try_end_120
.catch Ljava/lang/Exception; {:try_start_11d .. :try_end_120} :catch_121
.catchall {:try_start_11d .. :try_end_120} :catchall_262
goto :goto_131
:catch_121
move-exception v0
move-object v3, v0
.line 2876
:try_start_123
sget-object v0, Lxcrash/m;->e:Lxcrash/h;
const-string v4, "xcrash"
const-string v6, "JavaCrashHandler setDefaultUncaughtExceptionHandler failed"
.line 2095
invoke-interface {v0, v4, v6, v3}, Lxcrash/h;->c(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V
goto :goto_131
:cond_12d
move-object/from16 v18, v6
move-object/from16 v21, v8
.line 161
:goto_131
iget-boolean v0, v1, Lxcrash/m$a;->H:Z
const/16 v3, 0x15
if-eqz v0, :cond_19b
sget v0, Landroid/os/Build$VERSION;->SDK_INT:I
if-ge v0, v3, :cond_19b
.line 162
invoke-static {}, Lxcrash/b;->a()Lxcrash/b;
move-result-object v4
sget-object v0, Lxcrash/m;->b:Ljava/lang/String;
iget-object v6, v1, Lxcrash/m$a;->a:Ljava/lang/String;
iget-object v7, v1, Lxcrash/m$a;->b:Ljava/lang/String;
iget-boolean v8, v1, Lxcrash/m$a;->J:Z
iget v9, v1, Lxcrash/m$a;->L:I
iget v10, v1, Lxcrash/m$a;->M:I
iget v11, v1, Lxcrash/m$a;->N:I
iget-boolean v12, v1, Lxcrash/m$a;->O:Z
iget-boolean v13, v1, Lxcrash/m$a;->P:Z
iget-object v14, v1, Lxcrash/m$a;->R:Lxcrash/f;
.line 3081
sget v15, Landroid/os/Build$VERSION;->SDK_INT:I
if-ge v15, v3, :cond_19b
move-object/from16 v15, v18
.line 3085
iput-object v15, v4, Lxcrash/b;->a:Landroid/content/Context;
.line 3086
iput v5, v4, Lxcrash/b;->b:I
.line 3087
invoke-static/range {v21 .. v21}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z
move-result v5
if-eqz v5, :cond_166
const-string v5, "unknown"
goto :goto_168
:cond_166
move-object/from16 v5, v21
:goto_168
iput-object v5, v4, Lxcrash/b;->c:Ljava/lang/String;
.line 3088
iput-object v0, v4, Lxcrash/b;->d:Ljava/lang/String;
.line 3089
iput-object v6, v4, Lxcrash/b;->e:Ljava/lang/String;
.line 3090
iput-object v7, v4, Lxcrash/b;->f:Ljava/lang/String;
.line 3091
iput-boolean v8, v4, Lxcrash/b;->g:Z
.line 3092
iput v9, v4, Lxcrash/b;->h:I
.line 3093
iput v10, v4, Lxcrash/b;->i:I
.line 3094
iput v11, v4, Lxcrash/b;->j:I
.line 3095
iput-boolean v12, v4, Lxcrash/b;->k:Z
.line 3096
iput-boolean v13, v4, Lxcrash/b;->l:Z
.line 3097
iput-object v14, v4, Lxcrash/b;->m:Lxcrash/f;
.line 3099
new-instance v0, Lxcrash/b$1;
const-string v5, "/data/anr/"
invoke-direct {v0, v4, v5}, Lxcrash/b$1;-><init>(Lxcrash/b;Ljava/lang/String;)V
iput-object v0, v4, Lxcrash/b;->n:Landroid/os/FileObserver;
:try_end_187
.catchall {:try_start_123 .. :try_end_187} :catchall_262
.line 3115
:try_start_187
iget-object v0, v4, Lxcrash/b;->n:Landroid/os/FileObserver;
invoke-virtual {v0}, Landroid/os/FileObserver;->startWatching()V
:try_end_18c
.catch Ljava/lang/Exception; {:try_start_187 .. :try_end_18c} :catch_18d
.catchall {:try_start_187 .. :try_end_18c} :catchall_262
goto :goto_19d
:catch_18d
move-exception v0
const/4 v5, 0x0
.line 3117
:try_start_18f
iput-object v5, v4, Lxcrash/b;->n:Landroid/os/FileObserver;
.line 3876
sget-object v4, Lxcrash/m;->e:Lxcrash/h;
const-string v5, "xcrash"
const-string v6, "AnrHandler fileObserver startWatching failed"
.line 3118
invoke-interface {v4, v5, v6, v0}, Lxcrash/h;->c(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V
goto :goto_19d
:cond_19b
move-object/from16 v15, v18
.line 180
:goto_19d
iget-boolean v0, v1, Lxcrash/m$a;->t:Z
if-nez v0, :cond_1ad
iget-boolean v0, v1, Lxcrash/m$a;->H:Z
if-eqz v0, :cond_1aa
sget v0, Landroid/os/Build$VERSION;->SDK_INT:I
if-lt v0, v3, :cond_1aa
goto :goto_1ad
:cond_1aa
const/4 v3, 0x0
goto/16 :goto_224
.line 181
:cond_1ad
:goto_1ad
invoke-static {}, Lxcrash/NativeHandler;->getInstance()Lxcrash/NativeHandler;
move-result-object v5
iget-object v7, v1, Lxcrash/m$a;->e:Lxcrash/g;
sget-object v8, Lxcrash/m;->b:Ljava/lang/String;
iget-object v9, v1, Lxcrash/m$a;->a:Ljava/lang/String;
iget-object v10, v1, Lxcrash/m$a;->b:Ljava/lang/String;
iget-boolean v11, v1, Lxcrash/m$a;->t:Z
iget-boolean v12, v1, Lxcrash/m$a;->u:Z
iget v13, v1, Lxcrash/m$a;->w:I
iget v14, v1, Lxcrash/m$a;->x:I
iget v0, v1, Lxcrash/m$a;->y:I
iget-boolean v4, v1, Lxcrash/m$a;->z:Z
iget-boolean v6, v1, Lxcrash/m$a;->A:Z
iget-boolean v3, v1, Lxcrash/m$a;->B:Z
move/from16 v18, v3
iget-boolean v3, v1, Lxcrash/m$a;->C:Z
move/from16 v19, v3
iget-boolean v3, v1, Lxcrash/m$a;->D:Z
move/from16 v20, v3
iget v3, v1, Lxcrash/m$a;->E:I
move/from16 v21, v3
iget-object v3, v1, Lxcrash/m$a;->F:[Ljava/lang/String;
move-object/from16 v22, v3
iget-object v3, v1, Lxcrash/m$a;->G:Lxcrash/f;
move/from16 v23, v6
iget-boolean v6, v1, Lxcrash/m$a;->H:Z
if-eqz v6, :cond_1ed
sget v6, Landroid/os/Build$VERSION;->SDK_INT:I
move-object/from16 v24, v3
const/16 v3, 0x15
if-lt v6, v3, :cond_1ef
const/4 v3, 0x1
goto :goto_1f0
:cond_1ed
move-object/from16 v24, v3
:cond_1ef
const/4 v3, 0x0
:goto_1f0
iget-boolean v6, v1, Lxcrash/m$a;->I:Z
move/from16 p0, v3
iget-boolean v3, v1, Lxcrash/m$a;->J:Z
move/from16 v26, v3
iget v3, v1, Lxcrash/m$a;->L:I
move/from16 v27, v3
iget v3, v1, Lxcrash/m$a;->M:I
move/from16 v28, v3
iget v3, v1, Lxcrash/m$a;->N:I
move/from16 v29, v3
iget-boolean v3, v1, Lxcrash/m$a;->O:Z
move/from16 v30, v3
iget-boolean v3, v1, Lxcrash/m$a;->P:Z
move/from16 v31, v3
iget-object v3, v1, Lxcrash/m$a;->R:Lxcrash/f;
iget-boolean v1, v1, Lxcrash/m$a;->Q:Z
move/from16 v25, v6
move/from16 v17, v23
move-object v6, v15
move v15, v0
move/from16 v16, v4
move-object/from16 v23, v24
move/from16 v24, p0
move-object/from16 v32, v3
move/from16 v33, v1
invoke-virtual/range {v5 .. v33}, Lxcrash/NativeHandler;->initialize(Landroid/content/Context;Lxcrash/g;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZIIIZZZZZI[Ljava/lang/String;Lxcrash/f;ZZZIIIZZLxcrash/f;Z)I
move-result v3
.line 213
:goto_224
invoke-static {}, Lxcrash/e;->a()Lxcrash/e;
move-result-object v0
.line 4142
iget-object v1, v0, Lxcrash/e;->a:Ljava/lang/String;
if-eqz v1, :cond_260
iget v1, v0, Lxcrash/e;->b:I
:try_end_22e
.catchall {:try_start_18f .. :try_end_22e} :catchall_262
if-gez v1, :cond_231
goto :goto_260
:cond_231
:try_start_231
const-string v1, "xcrash_file_mgr"
.line 4148
iget v4, v0, Lxcrash/e;->b:I
if-nez v4, :cond_245
.line 4149
new-instance v4, Ljava/lang/Thread;
new-instance v5, Lxcrash/e$1;
invoke-direct {v5, v0}, Lxcrash/e$1;-><init>(Lxcrash/e;)V
invoke-direct {v4, v5, v1}, Ljava/lang/Thread;-><init>(Ljava/lang/Runnable;Ljava/lang/String;)V
.line 4154
invoke-virtual {v4}, Ljava/lang/Thread;->start()V
goto :goto_260
.line 4156
:cond_245
new-instance v4, Ljava/util/Timer;
invoke-direct {v4, v1}, Ljava/util/Timer;-><init>(Ljava/lang/String;)V
new-instance v1, Lxcrash/e$3;
invoke-direct {v1, v0}, Lxcrash/e$3;-><init>(Lxcrash/e;)V
iget v0, v0, Lxcrash/e;->b:I
int-to-long v5, v0
invoke-virtual {v4, v1, v5, v6}, Ljava/util/Timer;->schedule(Ljava/util/TimerTask;J)V
:try_end_255
.catch Ljava/lang/Exception; {:try_start_231 .. :try_end_255} :catch_256
.catchall {:try_start_231 .. :try_end_255} :catchall_262
goto :goto_260
:catch_256
move-exception v0
.line 4876
:try_start_257
sget-object v1, Lxcrash/m;->e:Lxcrash/h;
const-string v4, "xcrash"
const-string v5, "FileManager maintain start failed"
.line 4166
invoke-interface {v1, v4, v5, v0}, Lxcrash/h;->c(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V
:try_end_260
.catchall {:try_start_257 .. :try_end_260} :catchall_262
.line 215
:cond_260
:goto_260
monitor-exit v2
return v3
:catchall_262
move-exception v0
monitor-exit v2
throw v0
.end method
.method public static a()Z
.registers 1
.line 46
sget-boolean v0, Lxcrash/m;->a:Z
return v0
.end method
.method protected static a(Lxcrash/f;)Z
.registers 2
.line 925
invoke-static {}, Lxcrash/NativeHandler;->getInstance()Lxcrash/NativeHandler;
move-result-object v0
invoke-virtual {v0, p0}, Lxcrash/NativeHandler;->dumpTrace(Lxcrash/f;)Z
move-result p0
return p0
.end method
.method static b()Ljava/lang/String;
.registers 1
.line 864
sget-object v0, Lxcrash/m;->b:Ljava/lang/String;
return-object v0
.end method
.method static c()Ljava/lang/String;
.registers 1
.line 868
sget-object v0, Lxcrash/m;->c:Ljava/lang/String;
return-object v0
.end method
.method static d()Lxcrash/h;
.registers 1
.line 876
sget-object v0, Lxcrash/m;->e:Lxcrash/h;
return-object v0
.end method