1215 lines
48 KiB
Java
1215 lines
48 KiB
Java
package com.tencent.bugly.crashreport.crash;
|
|
|
|
import android.content.ContentValues;
|
|
import android.content.Context;
|
|
import android.database.Cursor;
|
|
import android.text.TextUtils;
|
|
import com.liulishuo.filedownloader.model.FileDownloadModel;
|
|
import com.tencent.bugly.BuglyStrategy;
|
|
import com.tencent.bugly.crashreport.common.info.PlugInBean;
|
|
import com.tencent.bugly.crashreport.common.strategy.StrategyBean;
|
|
import com.tencent.bugly.proguard.ak;
|
|
import com.tencent.bugly.proguard.am;
|
|
import com.tencent.bugly.proguard.an;
|
|
import com.tencent.bugly.proguard.o;
|
|
import com.tencent.bugly.proguard.p;
|
|
import com.tencent.bugly.proguard.r;
|
|
import com.tencent.bugly.proguard.u;
|
|
import com.tencent.bugly.proguard.x;
|
|
import com.tencent.bugly.proguard.z;
|
|
import com.ubt.jimu.base.util.FileUtil;
|
|
import java.io.ByteArrayOutputStream;
|
|
import java.io.File;
|
|
import java.io.FileInputStream;
|
|
import java.io.IOException;
|
|
import java.io.UnsupportedEncodingException;
|
|
import java.net.URLEncoder;
|
|
import java.util.ArrayList;
|
|
import java.util.Arrays;
|
|
import java.util.Collections;
|
|
import java.util.Date;
|
|
import java.util.HashMap;
|
|
import java.util.Iterator;
|
|
import java.util.LinkedHashMap;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
import java.util.regex.Pattern;
|
|
|
|
/* compiled from: BUGLY */
|
|
/* loaded from: classes.dex */
|
|
public final class b {
|
|
private static int a;
|
|
private Context b;
|
|
private u c;
|
|
private p d;
|
|
private com.tencent.bugly.crashreport.common.strategy.a e;
|
|
private o f;
|
|
private BuglyStrategy.a g;
|
|
|
|
public b(int i, Context context, u uVar, p pVar, com.tencent.bugly.crashreport.common.strategy.a aVar, BuglyStrategy.a aVar2, o oVar) {
|
|
a = i;
|
|
this.b = context;
|
|
this.c = uVar;
|
|
this.d = pVar;
|
|
this.e = aVar;
|
|
this.g = aVar2;
|
|
this.f = oVar;
|
|
}
|
|
|
|
private static List<a> a(List<a> list) {
|
|
if (list == null || list.size() == 0) {
|
|
return null;
|
|
}
|
|
long currentTimeMillis = System.currentTimeMillis();
|
|
ArrayList arrayList = new ArrayList();
|
|
for (a aVar : list) {
|
|
if (aVar.d && aVar.b <= currentTimeMillis - 86400000) {
|
|
arrayList.add(aVar);
|
|
}
|
|
}
|
|
return arrayList;
|
|
}
|
|
|
|
private static ContentValues e(CrashDetailBean crashDetailBean) {
|
|
if (crashDetailBean == null) {
|
|
return null;
|
|
}
|
|
try {
|
|
ContentValues contentValues = new ContentValues();
|
|
if (crashDetailBean.a > 0) {
|
|
contentValues.put(FileDownloadModel.ID, Long.valueOf(crashDetailBean.a));
|
|
}
|
|
contentValues.put("_tm", Long.valueOf(crashDetailBean.r));
|
|
contentValues.put("_s1", crashDetailBean.u);
|
|
int i = 1;
|
|
contentValues.put("_up", Integer.valueOf(crashDetailBean.d ? 1 : 0));
|
|
if (!crashDetailBean.j) {
|
|
i = 0;
|
|
}
|
|
contentValues.put("_me", Integer.valueOf(i));
|
|
contentValues.put("_uc", Integer.valueOf(crashDetailBean.l));
|
|
contentValues.put("_dt", z.a(crashDetailBean));
|
|
return contentValues;
|
|
} catch (Throwable th) {
|
|
if (!x.a(th)) {
|
|
th.printStackTrace();
|
|
}
|
|
return null;
|
|
}
|
|
}
|
|
|
|
public final void b(CrashDetailBean crashDetailBean) {
|
|
if (this.f != null) {
|
|
x.c("Calling 'onCrashHandleEnd' of RQD crash listener.", new Object[0]);
|
|
int i = crashDetailBean.b;
|
|
}
|
|
}
|
|
|
|
public final void c(CrashDetailBean crashDetailBean) {
|
|
int i;
|
|
Map<String, String> map;
|
|
String str;
|
|
HashMap hashMap;
|
|
if (crashDetailBean == null) {
|
|
return;
|
|
}
|
|
if (this.g == null && this.f == null) {
|
|
return;
|
|
}
|
|
try {
|
|
x.a("[crash callback] start user's callback:onCrashHandleStart()", new Object[0]);
|
|
switch (crashDetailBean.b) {
|
|
case 0:
|
|
i = 0;
|
|
break;
|
|
case 1:
|
|
i = 2;
|
|
break;
|
|
case 2:
|
|
i = 1;
|
|
break;
|
|
case 3:
|
|
i = 4;
|
|
break;
|
|
case 4:
|
|
i = 3;
|
|
break;
|
|
case 5:
|
|
i = 5;
|
|
break;
|
|
case 6:
|
|
i = 6;
|
|
break;
|
|
case 7:
|
|
i = 7;
|
|
break;
|
|
default:
|
|
return;
|
|
}
|
|
int i2 = crashDetailBean.b;
|
|
String str2 = crashDetailBean.n;
|
|
String str3 = crashDetailBean.p;
|
|
String str4 = crashDetailBean.q;
|
|
long j = crashDetailBean.r;
|
|
byte[] bArr = null;
|
|
if (this.f != null) {
|
|
x.c("Calling 'onCrashHandleStart' of RQD crash listener.", new Object[0]);
|
|
x.c("Calling 'getCrashExtraMessage' of RQD crash listener.", new Object[0]);
|
|
String b = this.f.b();
|
|
if (b != null) {
|
|
hashMap = new HashMap(1);
|
|
hashMap.put("userData", b);
|
|
} else {
|
|
hashMap = null;
|
|
}
|
|
map = hashMap;
|
|
} else if (this.g != null) {
|
|
x.c("Calling 'onCrashHandleStart' of Bugly crash listener.", new Object[0]);
|
|
map = this.g.onCrashHandleStart(i, crashDetailBean.n, crashDetailBean.o, crashDetailBean.q);
|
|
} else {
|
|
map = null;
|
|
}
|
|
if (map != null && map.size() > 0) {
|
|
crashDetailBean.O = new LinkedHashMap(map.size());
|
|
for (Map.Entry<String, String> entry : map.entrySet()) {
|
|
if (!z.a(entry.getKey())) {
|
|
String key = entry.getKey();
|
|
if (key.length() > 100) {
|
|
key = key.substring(0, 100);
|
|
x.d("setted key length is over limit %d substring to %s", 100, key);
|
|
}
|
|
if (z.a(entry.getValue()) || entry.getValue().length() <= 30000) {
|
|
str = entry.getValue();
|
|
} else {
|
|
str = entry.getValue().substring(entry.getValue().length() - BuglyStrategy.a.MAX_USERDATA_VALUE_LENGTH);
|
|
x.d("setted %s value length is over limit %d substring", key, Integer.valueOf(BuglyStrategy.a.MAX_USERDATA_VALUE_LENGTH));
|
|
}
|
|
crashDetailBean.O.put(key, str);
|
|
x.a("add setted key %s value size:%d", key, Integer.valueOf(str.length()));
|
|
}
|
|
}
|
|
}
|
|
x.a("[crash callback] start user's callback:onCrashHandleStart2GetExtraDatas()", new Object[0]);
|
|
if (this.f != null) {
|
|
x.c("Calling 'getCrashExtraData' of RQD crash listener.", new Object[0]);
|
|
bArr = this.f.a();
|
|
} else if (this.g != null) {
|
|
x.c("Calling 'onCrashHandleStart2GetExtraDatas' of Bugly crash listener.", new Object[0]);
|
|
bArr = this.g.onCrashHandleStart2GetExtraDatas(i, crashDetailBean.n, crashDetailBean.o, crashDetailBean.q);
|
|
}
|
|
crashDetailBean.T = bArr;
|
|
if (bArr != null) {
|
|
if (bArr.length > 30000) {
|
|
x.d("extra bytes size %d is over limit %d will drop over part", Integer.valueOf(bArr.length), Integer.valueOf(BuglyStrategy.a.MAX_USERDATA_VALUE_LENGTH));
|
|
crashDetailBean.T = Arrays.copyOf(bArr, BuglyStrategy.a.MAX_USERDATA_VALUE_LENGTH);
|
|
}
|
|
x.a("add extra bytes %d ", Integer.valueOf(bArr.length));
|
|
}
|
|
} catch (Throwable th) {
|
|
x.d("crash handle callback something wrong! %s", th.getClass().getName());
|
|
if (x.a(th)) {
|
|
return;
|
|
}
|
|
th.printStackTrace();
|
|
}
|
|
}
|
|
|
|
public final void d(CrashDetailBean crashDetailBean) {
|
|
ContentValues e;
|
|
if (crashDetailBean == null || (e = e(crashDetailBean)) == null) {
|
|
return;
|
|
}
|
|
long a2 = p.a().a("t_cr", e, (o) null, true);
|
|
if (a2 >= 0) {
|
|
x.c("insert %s success!", "t_cr");
|
|
crashDetailBean.a = a2;
|
|
}
|
|
}
|
|
|
|
private List<CrashDetailBean> b(List<a> list) {
|
|
Cursor cursor;
|
|
if (list == null || list.size() == 0) {
|
|
return null;
|
|
}
|
|
StringBuilder sb = new StringBuilder();
|
|
sb.append("_id in ");
|
|
sb.append("(");
|
|
Iterator<a> it = list.iterator();
|
|
while (it.hasNext()) {
|
|
sb.append(it.next().a);
|
|
sb.append(",");
|
|
}
|
|
StringBuilder sb2 = sb.toString().contains(",") ? new StringBuilder(sb.substring(0, sb.lastIndexOf(","))) : sb;
|
|
sb2.append(")");
|
|
String sb3 = sb2.toString();
|
|
sb2.setLength(0);
|
|
try {
|
|
cursor = p.a().a("t_cr", null, sb3, null, null, true);
|
|
if (cursor == null) {
|
|
return null;
|
|
}
|
|
try {
|
|
ArrayList arrayList = new ArrayList();
|
|
sb2.append("_id in ");
|
|
sb2.append("(");
|
|
int i = 0;
|
|
while (cursor.moveToNext()) {
|
|
CrashDetailBean a2 = a(cursor);
|
|
if (a2 != null) {
|
|
arrayList.add(a2);
|
|
} else {
|
|
try {
|
|
sb2.append(cursor.getLong(cursor.getColumnIndex(FileDownloadModel.ID)));
|
|
sb2.append(",");
|
|
i++;
|
|
} catch (Throwable unused) {
|
|
x.d("unknown id!", new Object[0]);
|
|
}
|
|
}
|
|
}
|
|
if (sb2.toString().contains(",")) {
|
|
sb2 = new StringBuilder(sb2.substring(0, sb2.lastIndexOf(",")));
|
|
}
|
|
sb2.append(")");
|
|
String sb4 = sb2.toString();
|
|
if (i > 0) {
|
|
x.d("deleted %s illegal data %d", "t_cr", Integer.valueOf(p.a().a("t_cr", sb4, (String[]) null, (o) null, true)));
|
|
}
|
|
if (cursor != null) {
|
|
cursor.close();
|
|
}
|
|
return arrayList;
|
|
} catch (Throwable th) {
|
|
th = th;
|
|
try {
|
|
if (!x.a(th)) {
|
|
th.printStackTrace();
|
|
}
|
|
if (cursor != null) {
|
|
cursor.close();
|
|
}
|
|
return null;
|
|
} finally {
|
|
if (cursor != null) {
|
|
cursor.close();
|
|
}
|
|
}
|
|
}
|
|
} catch (Throwable th2) {
|
|
th = th2;
|
|
cursor = null;
|
|
}
|
|
}
|
|
|
|
private static void d(List<CrashDetailBean> list) {
|
|
if (list != null) {
|
|
try {
|
|
if (list.size() == 0) {
|
|
return;
|
|
}
|
|
StringBuilder sb = new StringBuilder();
|
|
for (CrashDetailBean crashDetailBean : list) {
|
|
sb.append(" or _id");
|
|
sb.append(" = ");
|
|
sb.append(crashDetailBean.a);
|
|
}
|
|
String sb2 = sb.toString();
|
|
if (sb2.length() > 0) {
|
|
sb2 = sb2.substring(4);
|
|
}
|
|
sb.setLength(0);
|
|
x.c("deleted %s data %d", "t_cr", Integer.valueOf(p.a().a("t_cr", sb2, (String[]) null, (o) null, true)));
|
|
} catch (Throwable th) {
|
|
if (x.a(th)) {
|
|
return;
|
|
}
|
|
th.printStackTrace();
|
|
}
|
|
}
|
|
}
|
|
|
|
private CrashDetailBean a(List<a> list, CrashDetailBean crashDetailBean) {
|
|
List<CrashDetailBean> b;
|
|
String[] split;
|
|
if (list == null || list.size() == 0) {
|
|
return crashDetailBean;
|
|
}
|
|
CrashDetailBean crashDetailBean2 = null;
|
|
ArrayList arrayList = new ArrayList(10);
|
|
for (a aVar : list) {
|
|
if (aVar.e) {
|
|
arrayList.add(aVar);
|
|
}
|
|
}
|
|
if (arrayList.size() > 0 && (b = b(arrayList)) != null && b.size() > 0) {
|
|
Collections.sort(b);
|
|
CrashDetailBean crashDetailBean3 = null;
|
|
for (int i = 0; i < b.size(); i++) {
|
|
CrashDetailBean crashDetailBean4 = b.get(i);
|
|
if (i == 0) {
|
|
crashDetailBean3 = crashDetailBean4;
|
|
} else {
|
|
String str = crashDetailBean4.s;
|
|
if (str != null && (split = str.split("\n")) != null) {
|
|
for (String str2 : split) {
|
|
if (!crashDetailBean3.s.contains(str2)) {
|
|
crashDetailBean3.t++;
|
|
crashDetailBean3.s += str2 + "\n";
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
crashDetailBean2 = crashDetailBean3;
|
|
}
|
|
if (crashDetailBean2 == null) {
|
|
crashDetailBean.j = true;
|
|
crashDetailBean.t = 0;
|
|
crashDetailBean.s = "";
|
|
crashDetailBean2 = crashDetailBean;
|
|
}
|
|
for (a aVar2 : list) {
|
|
if (!aVar2.e && !aVar2.d) {
|
|
String str3 = crashDetailBean2.s;
|
|
StringBuilder sb = new StringBuilder();
|
|
sb.append(aVar2.b);
|
|
if (!str3.contains(sb.toString())) {
|
|
crashDetailBean2.t++;
|
|
crashDetailBean2.s += aVar2.b + "\n";
|
|
}
|
|
}
|
|
}
|
|
if (crashDetailBean2.r != crashDetailBean.r) {
|
|
String str4 = crashDetailBean2.s;
|
|
StringBuilder sb2 = new StringBuilder();
|
|
sb2.append(crashDetailBean.r);
|
|
if (!str4.contains(sb2.toString())) {
|
|
crashDetailBean2.t++;
|
|
crashDetailBean2.s += crashDetailBean.r + "\n";
|
|
}
|
|
}
|
|
return crashDetailBean2;
|
|
}
|
|
|
|
private static a b(Cursor cursor) {
|
|
if (cursor == null) {
|
|
return null;
|
|
}
|
|
try {
|
|
a aVar = new a();
|
|
aVar.a = cursor.getLong(cursor.getColumnIndex(FileDownloadModel.ID));
|
|
aVar.b = cursor.getLong(cursor.getColumnIndex("_tm"));
|
|
aVar.c = cursor.getString(cursor.getColumnIndex("_s1"));
|
|
aVar.d = cursor.getInt(cursor.getColumnIndex("_up")) == 1;
|
|
aVar.e = cursor.getInt(cursor.getColumnIndex("_me")) == 1;
|
|
aVar.f = cursor.getInt(cursor.getColumnIndex("_uc"));
|
|
return aVar;
|
|
} catch (Throwable th) {
|
|
if (!x.a(th)) {
|
|
th.printStackTrace();
|
|
}
|
|
return null;
|
|
}
|
|
}
|
|
|
|
public final boolean a(CrashDetailBean crashDetailBean) {
|
|
return a(crashDetailBean, -123456789);
|
|
}
|
|
|
|
public final boolean a(CrashDetailBean crashDetailBean, int i) {
|
|
if (crashDetailBean == null) {
|
|
return true;
|
|
}
|
|
String str = c.n;
|
|
if (str != null && !str.isEmpty()) {
|
|
x.c("Crash filter for crash stack is: %s", c.n);
|
|
if (crashDetailBean.q.contains(c.n)) {
|
|
x.d("This crash contains the filter string set. It will not be record and upload.", new Object[0]);
|
|
return true;
|
|
}
|
|
}
|
|
String str2 = c.o;
|
|
if (str2 != null && !str2.isEmpty()) {
|
|
x.c("Crash regular filter for crash stack is: %s", c.o);
|
|
if (Pattern.compile(c.o).matcher(crashDetailBean.q).find()) {
|
|
x.d("This crash matches the regular filter string set. It will not be record and upload.", new Object[0]);
|
|
return true;
|
|
}
|
|
}
|
|
int i2 = crashDetailBean.b;
|
|
String str3 = crashDetailBean.n;
|
|
String str4 = crashDetailBean.o;
|
|
String str5 = crashDetailBean.p;
|
|
String str6 = crashDetailBean.q;
|
|
long j = crashDetailBean.r;
|
|
String str7 = crashDetailBean.m;
|
|
String str8 = crashDetailBean.e;
|
|
String str9 = crashDetailBean.c;
|
|
String str10 = crashDetailBean.A;
|
|
String str11 = crashDetailBean.B;
|
|
if (this.f != null) {
|
|
x.c("Calling 'onCrashSaving' of RQD crash listener.", new Object[0]);
|
|
if (!this.f.c()) {
|
|
x.d("Crash listener 'onCrashSaving' return 'false' thus will not handle this crash.", new Object[0]);
|
|
return true;
|
|
}
|
|
}
|
|
if (crashDetailBean.b != 2) {
|
|
r rVar = new r();
|
|
rVar.b = 1;
|
|
rVar.c = crashDetailBean.A;
|
|
rVar.d = crashDetailBean.B;
|
|
rVar.e = crashDetailBean.r;
|
|
this.d.b(1);
|
|
this.d.a(rVar);
|
|
x.b("[crash] a crash occur, handling...", new Object[0]);
|
|
} else {
|
|
x.b("[crash] a caught exception occur, handling...", new Object[0]);
|
|
}
|
|
List<a> b = b();
|
|
ArrayList arrayList = null;
|
|
if (b != null && b.size() > 0) {
|
|
arrayList = new ArrayList(10);
|
|
ArrayList arrayList2 = new ArrayList(10);
|
|
arrayList.addAll(a(b));
|
|
b.removeAll(arrayList);
|
|
if (b.size() > 20) {
|
|
StringBuilder sb = new StringBuilder();
|
|
sb.append("_id in ");
|
|
sb.append("(");
|
|
sb.append("SELECT _id");
|
|
sb.append(" FROM t_cr");
|
|
sb.append(" order by _id");
|
|
sb.append(" limit 5");
|
|
sb.append(")");
|
|
String sb2 = sb.toString();
|
|
sb.setLength(0);
|
|
try {
|
|
x.c("deleted first record %s data %d", "t_cr", Integer.valueOf(p.a().a("t_cr", sb2, (String[]) null, (o) null, true)));
|
|
} catch (Throwable th) {
|
|
if (!x.a(th)) {
|
|
th.printStackTrace();
|
|
}
|
|
}
|
|
}
|
|
if (!com.tencent.bugly.b.c && c.d) {
|
|
boolean z = false;
|
|
for (a aVar : b) {
|
|
if (crashDetailBean.u.equals(aVar.c)) {
|
|
if (aVar.e) {
|
|
z = true;
|
|
}
|
|
arrayList2.add(aVar);
|
|
}
|
|
}
|
|
if (z || arrayList2.size() >= c.c) {
|
|
x.a("same crash occur too much do merged!", new Object[0]);
|
|
CrashDetailBean a2 = a(arrayList2, crashDetailBean);
|
|
for (a aVar2 : arrayList2) {
|
|
if (aVar2.a != a2.a) {
|
|
arrayList.add(aVar2);
|
|
}
|
|
}
|
|
d(a2);
|
|
c(arrayList);
|
|
x.b("[crash] save crash success. For this device crash many times, it will not upload crashes immediately", new Object[0]);
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
d(crashDetailBean);
|
|
if (arrayList != null && !arrayList.isEmpty()) {
|
|
c(arrayList);
|
|
}
|
|
x.b("[crash] save crash success", new Object[0]);
|
|
return false;
|
|
}
|
|
|
|
private List<a> b() {
|
|
Cursor cursor;
|
|
ArrayList arrayList = new ArrayList();
|
|
try {
|
|
cursor = p.a().a("t_cr", new String[]{FileDownloadModel.ID, "_tm", "_s1", "_up", "_me", "_uc"}, null, null, null, true);
|
|
if (cursor == null) {
|
|
return null;
|
|
}
|
|
try {
|
|
StringBuilder sb = new StringBuilder();
|
|
sb.append("_id in ");
|
|
sb.append("(");
|
|
int i = 0;
|
|
while (cursor.moveToNext()) {
|
|
a b = b(cursor);
|
|
if (b != null) {
|
|
arrayList.add(b);
|
|
} else {
|
|
try {
|
|
sb.append(cursor.getLong(cursor.getColumnIndex(FileDownloadModel.ID)));
|
|
sb.append(",");
|
|
i++;
|
|
} catch (Throwable unused) {
|
|
x.d("unknown id!", new Object[0]);
|
|
}
|
|
}
|
|
}
|
|
if (sb.toString().contains(",")) {
|
|
sb = new StringBuilder(sb.substring(0, sb.lastIndexOf(",")));
|
|
}
|
|
sb.append(")");
|
|
String sb2 = sb.toString();
|
|
sb.setLength(0);
|
|
if (i > 0) {
|
|
x.d("deleted %s illegal data %d", "t_cr", Integer.valueOf(p.a().a("t_cr", sb2, (String[]) null, (o) null, true)));
|
|
}
|
|
if (cursor != null) {
|
|
cursor.close();
|
|
}
|
|
return arrayList;
|
|
} catch (Throwable th) {
|
|
th = th;
|
|
try {
|
|
if (!x.a(th)) {
|
|
th.printStackTrace();
|
|
}
|
|
if (cursor != null) {
|
|
cursor.close();
|
|
}
|
|
return arrayList;
|
|
} finally {
|
|
if (cursor != null) {
|
|
cursor.close();
|
|
}
|
|
}
|
|
}
|
|
} catch (Throwable th2) {
|
|
th = th2;
|
|
cursor = null;
|
|
}
|
|
}
|
|
|
|
private static void c(List<a> list) {
|
|
if (list == null || list.size() == 0) {
|
|
return;
|
|
}
|
|
StringBuilder sb = new StringBuilder();
|
|
sb.append("_id in ");
|
|
sb.append("(");
|
|
Iterator<a> it = list.iterator();
|
|
while (it.hasNext()) {
|
|
sb.append(it.next().a);
|
|
sb.append(",");
|
|
}
|
|
StringBuilder sb2 = new StringBuilder(sb.substring(0, sb.lastIndexOf(",")));
|
|
sb2.append(")");
|
|
String sb3 = sb2.toString();
|
|
sb2.setLength(0);
|
|
try {
|
|
x.c("deleted %s data %d", "t_cr", Integer.valueOf(p.a().a("t_cr", sb3, (String[]) null, (o) null, true)));
|
|
} catch (Throwable th) {
|
|
if (x.a(th)) {
|
|
return;
|
|
}
|
|
th.printStackTrace();
|
|
}
|
|
}
|
|
|
|
public final List<CrashDetailBean> a() {
|
|
StrategyBean c = com.tencent.bugly.crashreport.common.strategy.a.a().c();
|
|
if (c == null) {
|
|
x.d("have not synced remote!", new Object[0]);
|
|
return null;
|
|
}
|
|
if (!c.g) {
|
|
x.d("Crashreport remote closed, please check your APP ID correct and Version available, then uninstall and reinstall your app.", new Object[0]);
|
|
x.b("[init] WARNING! Crashreport closed by server, please check your APP ID correct and Version available, then uninstall and reinstall your app.", new Object[0]);
|
|
return null;
|
|
}
|
|
long currentTimeMillis = System.currentTimeMillis();
|
|
long b = z.b();
|
|
List<a> b2 = b();
|
|
x.c("Size of crash list loaded from DB: %s", Integer.valueOf(b2.size()));
|
|
if (b2 == null || b2.size() <= 0) {
|
|
return null;
|
|
}
|
|
ArrayList arrayList = new ArrayList();
|
|
arrayList.addAll(a(b2));
|
|
b2.removeAll(arrayList);
|
|
Iterator<a> it = b2.iterator();
|
|
while (it.hasNext()) {
|
|
a next = it.next();
|
|
long j = next.b;
|
|
if (j < b - c.g) {
|
|
it.remove();
|
|
arrayList.add(next);
|
|
} else if (next.d) {
|
|
if (j >= currentTimeMillis - 86400000) {
|
|
it.remove();
|
|
} else if (!next.e) {
|
|
it.remove();
|
|
arrayList.add(next);
|
|
}
|
|
} else if (next.f >= 3 && j < currentTimeMillis - 86400000) {
|
|
it.remove();
|
|
arrayList.add(next);
|
|
}
|
|
}
|
|
if (arrayList.size() > 0) {
|
|
c(arrayList);
|
|
}
|
|
ArrayList arrayList2 = new ArrayList();
|
|
List<CrashDetailBean> b3 = b(b2);
|
|
if (b3 != null && b3.size() > 0) {
|
|
String str = com.tencent.bugly.crashreport.common.info.a.b().j;
|
|
Iterator<CrashDetailBean> it2 = b3.iterator();
|
|
while (it2.hasNext()) {
|
|
CrashDetailBean next2 = it2.next();
|
|
if (!str.equals(next2.f)) {
|
|
it2.remove();
|
|
arrayList2.add(next2);
|
|
}
|
|
}
|
|
}
|
|
if (arrayList2.size() > 0) {
|
|
d(arrayList2);
|
|
}
|
|
return b3;
|
|
}
|
|
|
|
public final void a(CrashDetailBean crashDetailBean, long j, boolean z) {
|
|
if (c.l) {
|
|
x.a("try to upload right now", new Object[0]);
|
|
ArrayList arrayList = new ArrayList();
|
|
arrayList.add(crashDetailBean);
|
|
a(arrayList, 3000L, z, crashDetailBean.b == 7, z);
|
|
}
|
|
}
|
|
|
|
/* JADX WARN: Removed duplicated region for block: B:42:0x00a7 A[Catch: all -> 0x00e9, TryCatch #0 {all -> 0x00e9, blocks: (B:20:0x0041, B:22:0x0047, B:23:0x004c, B:25:0x0053, B:26:0x0058, B:29:0x0064, B:32:0x006e, B:36:0x0077, B:37:0x0087, B:39:0x008d, B:42:0x00a7, B:44:0x00af, B:46:0x00b5, B:48:0x00bd, B:50:0x00c5, B:52:0x00cd, B:54:0x00d4, B:56:0x00e0, B:58:0x009d, B:60:0x0056, B:61:0x004a), top: B:19:0x0041 }] */
|
|
/* JADX WARN: Removed duplicated region for block: B:44:0x00af A[Catch: all -> 0x00e9, TryCatch #0 {all -> 0x00e9, blocks: (B:20:0x0041, B:22:0x0047, B:23:0x004c, B:25:0x0053, B:26:0x0058, B:29:0x0064, B:32:0x006e, B:36:0x0077, B:37:0x0087, B:39:0x008d, B:42:0x00a7, B:44:0x00af, B:46:0x00b5, B:48:0x00bd, B:50:0x00c5, B:52:0x00cd, B:54:0x00d4, B:56:0x00e0, B:58:0x009d, B:60:0x0056, B:61:0x004a), top: B:19:0x0041 }] */
|
|
/*
|
|
Code decompiled incorrectly, please refer to instructions dump.
|
|
To view partially-correct code enable 'Show inconsistent code' option in preferences
|
|
*/
|
|
public final void a(final java.util.List<com.tencent.bugly.crashreport.crash.CrashDetailBean> r15, long r16, boolean r18, boolean r19, boolean r20) {
|
|
/*
|
|
Method dump skipped, instructions count: 258
|
|
To view this dump change 'Code comments level' option to 'DEBUG'
|
|
*/
|
|
throw new UnsupportedOperationException("Method not decompiled: com.tencent.bugly.crashreport.crash.b.a(java.util.List, long, boolean, boolean, boolean):void");
|
|
}
|
|
|
|
public static void a(boolean z, List<CrashDetailBean> list) {
|
|
if (list != null && list.size() > 0) {
|
|
x.c("up finish update state %b", Boolean.valueOf(z));
|
|
for (CrashDetailBean crashDetailBean : list) {
|
|
x.c("pre uid:%s uc:%d re:%b me:%b", crashDetailBean.c, Integer.valueOf(crashDetailBean.l), Boolean.valueOf(crashDetailBean.d), Boolean.valueOf(crashDetailBean.j));
|
|
crashDetailBean.l++;
|
|
crashDetailBean.d = z;
|
|
x.c("set uid:%s uc:%d re:%b me:%b", crashDetailBean.c, Integer.valueOf(crashDetailBean.l), Boolean.valueOf(crashDetailBean.d), Boolean.valueOf(crashDetailBean.j));
|
|
}
|
|
Iterator<CrashDetailBean> it = list.iterator();
|
|
while (it.hasNext()) {
|
|
c.a().a(it.next());
|
|
}
|
|
x.c("update state size %d", Integer.valueOf(list.size()));
|
|
}
|
|
if (z) {
|
|
return;
|
|
}
|
|
x.b("[crash] upload fail.", new Object[0]);
|
|
}
|
|
|
|
private static CrashDetailBean a(Cursor cursor) {
|
|
if (cursor == null) {
|
|
return null;
|
|
}
|
|
try {
|
|
byte[] blob = cursor.getBlob(cursor.getColumnIndex("_dt"));
|
|
if (blob == null) {
|
|
return null;
|
|
}
|
|
long j = cursor.getLong(cursor.getColumnIndex(FileDownloadModel.ID));
|
|
CrashDetailBean crashDetailBean = (CrashDetailBean) z.a(blob, CrashDetailBean.CREATOR);
|
|
if (crashDetailBean != null) {
|
|
crashDetailBean.a = j;
|
|
}
|
|
return crashDetailBean;
|
|
} catch (Throwable th) {
|
|
if (!x.a(th)) {
|
|
th.printStackTrace();
|
|
}
|
|
return null;
|
|
}
|
|
}
|
|
|
|
private static an a(Context context, CrashDetailBean crashDetailBean, com.tencent.bugly.crashreport.common.info.a aVar) {
|
|
am a2;
|
|
am a3;
|
|
am amVar;
|
|
if (context != null && crashDetailBean != null && aVar != null) {
|
|
an anVar = new an();
|
|
int i = crashDetailBean.b;
|
|
switch (i) {
|
|
case 0:
|
|
anVar.a = crashDetailBean.j ? "200" : "100";
|
|
break;
|
|
case 1:
|
|
anVar.a = crashDetailBean.j ? "201" : "101";
|
|
break;
|
|
case 2:
|
|
anVar.a = crashDetailBean.j ? "202" : "102";
|
|
break;
|
|
case 3:
|
|
anVar.a = crashDetailBean.j ? "203" : "103";
|
|
break;
|
|
case 4:
|
|
anVar.a = crashDetailBean.j ? "204" : "104";
|
|
break;
|
|
case 5:
|
|
anVar.a = crashDetailBean.j ? "207" : "107";
|
|
break;
|
|
case 6:
|
|
anVar.a = crashDetailBean.j ? "206" : "106";
|
|
break;
|
|
case 7:
|
|
anVar.a = crashDetailBean.j ? "208" : "108";
|
|
break;
|
|
default:
|
|
x.e("crash type error! %d", Integer.valueOf(i));
|
|
break;
|
|
}
|
|
anVar.b = crashDetailBean.r;
|
|
anVar.c = crashDetailBean.n;
|
|
anVar.d = crashDetailBean.o;
|
|
anVar.e = crashDetailBean.p;
|
|
anVar.g = crashDetailBean.q;
|
|
anVar.h = crashDetailBean.z;
|
|
anVar.i = crashDetailBean.c;
|
|
anVar.j = null;
|
|
anVar.l = crashDetailBean.m;
|
|
anVar.m = crashDetailBean.e;
|
|
anVar.f = crashDetailBean.B;
|
|
anVar.t = com.tencent.bugly.crashreport.common.info.a.b().i();
|
|
anVar.n = null;
|
|
Map<String, PlugInBean> map = crashDetailBean.i;
|
|
if (map != null && map.size() > 0) {
|
|
anVar.o = new ArrayList<>();
|
|
for (Map.Entry<String, PlugInBean> entry : crashDetailBean.i.entrySet()) {
|
|
ak akVar = new ak();
|
|
akVar.a = entry.getValue().a;
|
|
akVar.c = entry.getValue().c;
|
|
akVar.d = entry.getValue().b;
|
|
akVar.b = aVar.r();
|
|
anVar.o.add(akVar);
|
|
}
|
|
}
|
|
Map<String, PlugInBean> map2 = crashDetailBean.h;
|
|
if (map2 != null && map2.size() > 0) {
|
|
anVar.p = new ArrayList<>();
|
|
for (Map.Entry<String, PlugInBean> entry2 : crashDetailBean.h.entrySet()) {
|
|
ak akVar2 = new ak();
|
|
akVar2.a = entry2.getValue().a;
|
|
akVar2.c = entry2.getValue().c;
|
|
akVar2.d = entry2.getValue().b;
|
|
anVar.p.add(akVar2);
|
|
}
|
|
}
|
|
if (crashDetailBean.j) {
|
|
anVar.k = crashDetailBean.t;
|
|
String str = crashDetailBean.s;
|
|
if (str != null && str.length() > 0) {
|
|
if (anVar.q == null) {
|
|
anVar.q = new ArrayList<>();
|
|
}
|
|
try {
|
|
anVar.q.add(new am((byte) 1, "alltimes.txt", crashDetailBean.s.getBytes("utf-8")));
|
|
} catch (UnsupportedEncodingException e) {
|
|
e.printStackTrace();
|
|
anVar.q = null;
|
|
}
|
|
}
|
|
Object[] objArr = new Object[2];
|
|
objArr[0] = Integer.valueOf(anVar.k);
|
|
ArrayList<am> arrayList = anVar.q;
|
|
objArr[1] = Integer.valueOf(arrayList != null ? arrayList.size() : 0);
|
|
x.c("crashcount:%d sz:%d", objArr);
|
|
}
|
|
if (crashDetailBean.w != null) {
|
|
if (anVar.q == null) {
|
|
anVar.q = new ArrayList<>();
|
|
}
|
|
try {
|
|
anVar.q.add(new am((byte) 1, "log.txt", crashDetailBean.w.getBytes("utf-8")));
|
|
} catch (UnsupportedEncodingException e2) {
|
|
e2.printStackTrace();
|
|
anVar.q = null;
|
|
}
|
|
}
|
|
if (crashDetailBean.x != null) {
|
|
if (anVar.q == null) {
|
|
anVar.q = new ArrayList<>();
|
|
}
|
|
try {
|
|
anVar.q.add(new am((byte) 1, "jniLog.txt", crashDetailBean.x.getBytes("utf-8")));
|
|
} catch (UnsupportedEncodingException e3) {
|
|
e3.printStackTrace();
|
|
anVar.q = null;
|
|
}
|
|
}
|
|
if (!z.a(crashDetailBean.U)) {
|
|
if (anVar.q == null) {
|
|
anVar.q = new ArrayList<>();
|
|
}
|
|
try {
|
|
amVar = new am((byte) 1, "crashInfos.txt", crashDetailBean.U.getBytes("utf-8"));
|
|
} catch (UnsupportedEncodingException e4) {
|
|
e4.printStackTrace();
|
|
amVar = null;
|
|
}
|
|
if (amVar != null) {
|
|
x.c("attach crash infos", new Object[0]);
|
|
anVar.q.add(amVar);
|
|
}
|
|
}
|
|
if (crashDetailBean.V != null) {
|
|
if (anVar.q == null) {
|
|
anVar.q = new ArrayList<>();
|
|
}
|
|
am a4 = a("backupRecord.zip", context, crashDetailBean.V);
|
|
if (a4 != null) {
|
|
x.c("attach backup record", new Object[0]);
|
|
anVar.q.add(a4);
|
|
}
|
|
}
|
|
byte[] bArr = crashDetailBean.y;
|
|
if (bArr != null && bArr.length > 0) {
|
|
am amVar2 = new am((byte) 2, "buglylog.zip", bArr);
|
|
x.c("attach user log", new Object[0]);
|
|
if (anVar.q == null) {
|
|
anVar.q = new ArrayList<>();
|
|
}
|
|
anVar.q.add(amVar2);
|
|
}
|
|
if (crashDetailBean.b == 3) {
|
|
if (anVar.q == null) {
|
|
anVar.q = new ArrayList<>();
|
|
}
|
|
x.c("crashBean.userDatas:%s", crashDetailBean.O);
|
|
Map<String, String> map3 = crashDetailBean.O;
|
|
if (map3 != null && map3.containsKey("BUGLY_CR_01")) {
|
|
try {
|
|
if (!TextUtils.isEmpty(crashDetailBean.O.get("BUGLY_CR_01"))) {
|
|
anVar.q.add(new am((byte) 1, "anrMessage.txt", crashDetailBean.O.get("BUGLY_CR_01").getBytes("utf-8")));
|
|
x.c("attach anr message", new Object[0]);
|
|
}
|
|
} catch (UnsupportedEncodingException e5) {
|
|
e5.printStackTrace();
|
|
anVar.q = null;
|
|
}
|
|
crashDetailBean.O.remove("BUGLY_CR_01");
|
|
}
|
|
String str2 = crashDetailBean.v;
|
|
if (str2 != null && (a3 = a("trace.zip", context, str2)) != null) {
|
|
x.c("attach traces", new Object[0]);
|
|
anVar.q.add(a3);
|
|
}
|
|
}
|
|
if (crashDetailBean.b == 1) {
|
|
if (anVar.q == null) {
|
|
anVar.q = new ArrayList<>();
|
|
}
|
|
String str3 = crashDetailBean.v;
|
|
if (str3 != null && (a2 = a("tomb.zip", context, str3)) != null) {
|
|
x.c("attach tombs", new Object[0]);
|
|
anVar.q.add(a2);
|
|
}
|
|
}
|
|
List<String> list = aVar.C;
|
|
if (list != null && !list.isEmpty()) {
|
|
if (anVar.q == null) {
|
|
anVar.q = new ArrayList<>();
|
|
}
|
|
StringBuilder sb = new StringBuilder();
|
|
Iterator<String> it = aVar.C.iterator();
|
|
while (it.hasNext()) {
|
|
sb.append(it.next());
|
|
}
|
|
try {
|
|
anVar.q.add(new am((byte) 1, "martianlog.txt", sb.toString().getBytes("utf-8")));
|
|
x.c("attach pageTracingList", new Object[0]);
|
|
} catch (UnsupportedEncodingException e6) {
|
|
e6.printStackTrace();
|
|
}
|
|
}
|
|
byte[] bArr2 = crashDetailBean.T;
|
|
if (bArr2 != null && bArr2.length > 0) {
|
|
if (anVar.q == null) {
|
|
anVar.q = new ArrayList<>();
|
|
}
|
|
anVar.q.add(new am((byte) 1, "userExtraByteData", crashDetailBean.T));
|
|
x.c("attach extraData", new Object[0]);
|
|
}
|
|
anVar.r = new HashMap();
|
|
Map<String, String> map4 = anVar.r;
|
|
StringBuilder sb2 = new StringBuilder();
|
|
sb2.append(crashDetailBean.C);
|
|
map4.put("A9", sb2.toString());
|
|
Map<String, String> map5 = anVar.r;
|
|
StringBuilder sb3 = new StringBuilder();
|
|
sb3.append(crashDetailBean.D);
|
|
map5.put("A11", sb3.toString());
|
|
Map<String, String> map6 = anVar.r;
|
|
StringBuilder sb4 = new StringBuilder();
|
|
sb4.append(crashDetailBean.E);
|
|
map6.put("A10", sb4.toString());
|
|
anVar.r.put("A23", crashDetailBean.f);
|
|
anVar.r.put("A7", aVar.f);
|
|
anVar.r.put("A6", aVar.s());
|
|
anVar.r.put("A5", aVar.r());
|
|
anVar.r.put("A22", aVar.h());
|
|
Map<String, String> map7 = anVar.r;
|
|
StringBuilder sb5 = new StringBuilder();
|
|
sb5.append(crashDetailBean.G);
|
|
map7.put("A2", sb5.toString());
|
|
Map<String, String> map8 = anVar.r;
|
|
StringBuilder sb6 = new StringBuilder();
|
|
sb6.append(crashDetailBean.F);
|
|
map8.put("A1", sb6.toString());
|
|
anVar.r.put("A24", aVar.h);
|
|
Map<String, String> map9 = anVar.r;
|
|
StringBuilder sb7 = new StringBuilder();
|
|
sb7.append(crashDetailBean.H);
|
|
map9.put("A17", sb7.toString());
|
|
anVar.r.put("A3", aVar.k());
|
|
anVar.r.put("A16", aVar.m());
|
|
anVar.r.put("A25", aVar.n());
|
|
anVar.r.put("A14", aVar.l());
|
|
anVar.r.put("A15", aVar.w());
|
|
Map<String, String> map10 = anVar.r;
|
|
StringBuilder sb8 = new StringBuilder();
|
|
sb8.append(aVar.x());
|
|
map10.put("A13", sb8.toString());
|
|
anVar.r.put("A34", crashDetailBean.A);
|
|
if (aVar.x != null) {
|
|
anVar.r.put("productIdentify", aVar.x);
|
|
}
|
|
try {
|
|
anVar.r.put("A26", URLEncoder.encode(crashDetailBean.I, "utf-8"));
|
|
} catch (UnsupportedEncodingException e7) {
|
|
e7.printStackTrace();
|
|
}
|
|
if (crashDetailBean.b == 1) {
|
|
anVar.r.put("A27", crashDetailBean.K);
|
|
anVar.r.put("A28", crashDetailBean.J);
|
|
Map<String, String> map11 = anVar.r;
|
|
StringBuilder sb9 = new StringBuilder();
|
|
sb9.append(crashDetailBean.k);
|
|
map11.put("A29", sb9.toString());
|
|
}
|
|
anVar.r.put("A30", crashDetailBean.L);
|
|
Map<String, String> map12 = anVar.r;
|
|
StringBuilder sb10 = new StringBuilder();
|
|
sb10.append(crashDetailBean.M);
|
|
map12.put("A18", sb10.toString());
|
|
Map<String, String> map13 = anVar.r;
|
|
StringBuilder sb11 = new StringBuilder();
|
|
sb11.append(!crashDetailBean.N);
|
|
map13.put("A36", sb11.toString());
|
|
Map<String, String> map14 = anVar.r;
|
|
StringBuilder sb12 = new StringBuilder();
|
|
sb12.append(aVar.q);
|
|
map14.put("F02", sb12.toString());
|
|
Map<String, String> map15 = anVar.r;
|
|
StringBuilder sb13 = new StringBuilder();
|
|
sb13.append(aVar.r);
|
|
map15.put("F03", sb13.toString());
|
|
anVar.r.put("F04", aVar.e());
|
|
Map<String, String> map16 = anVar.r;
|
|
StringBuilder sb14 = new StringBuilder();
|
|
sb14.append(aVar.s);
|
|
map16.put("F05", sb14.toString());
|
|
anVar.r.put("F06", aVar.p);
|
|
anVar.r.put("F08", aVar.v);
|
|
anVar.r.put("F09", aVar.w);
|
|
Map<String, String> map17 = anVar.r;
|
|
StringBuilder sb15 = new StringBuilder();
|
|
sb15.append(aVar.t);
|
|
map17.put("F10", sb15.toString());
|
|
if (crashDetailBean.P >= 0) {
|
|
Map<String, String> map18 = anVar.r;
|
|
StringBuilder sb16 = new StringBuilder();
|
|
sb16.append(crashDetailBean.P);
|
|
map18.put("C01", sb16.toString());
|
|
}
|
|
if (crashDetailBean.Q >= 0) {
|
|
Map<String, String> map19 = anVar.r;
|
|
StringBuilder sb17 = new StringBuilder();
|
|
sb17.append(crashDetailBean.Q);
|
|
map19.put("C02", sb17.toString());
|
|
}
|
|
Map<String, String> map20 = crashDetailBean.R;
|
|
if (map20 != null && map20.size() > 0) {
|
|
for (Map.Entry<String, String> entry3 : crashDetailBean.R.entrySet()) {
|
|
anVar.r.put("C03_" + entry3.getKey(), entry3.getValue());
|
|
}
|
|
}
|
|
Map<String, String> map21 = crashDetailBean.S;
|
|
if (map21 != null && map21.size() > 0) {
|
|
for (Map.Entry<String, String> entry4 : crashDetailBean.S.entrySet()) {
|
|
anVar.r.put("C04_" + entry4.getKey(), entry4.getValue());
|
|
}
|
|
}
|
|
anVar.s = null;
|
|
Map<String, String> map22 = crashDetailBean.O;
|
|
if (map22 != null && map22.size() > 0) {
|
|
anVar.s = crashDetailBean.O;
|
|
x.a("setted message size %d", Integer.valueOf(anVar.s.size()));
|
|
}
|
|
Object[] objArr2 = new Object[12];
|
|
objArr2[0] = crashDetailBean.n;
|
|
objArr2[1] = crashDetailBean.c;
|
|
objArr2[2] = aVar.e();
|
|
objArr2[3] = Long.valueOf((crashDetailBean.r - crashDetailBean.M) / 1000);
|
|
objArr2[4] = Boolean.valueOf(crashDetailBean.k);
|
|
objArr2[5] = Boolean.valueOf(crashDetailBean.N);
|
|
objArr2[6] = Boolean.valueOf(crashDetailBean.j);
|
|
objArr2[7] = Boolean.valueOf(crashDetailBean.b == 1);
|
|
objArr2[8] = Integer.valueOf(crashDetailBean.t);
|
|
objArr2[9] = crashDetailBean.s;
|
|
objArr2[10] = Boolean.valueOf(crashDetailBean.d);
|
|
objArr2[11] = Integer.valueOf(anVar.r.size());
|
|
x.c("%s rid:%s sess:%s ls:%ds isR:%b isF:%b isM:%b isN:%b mc:%d ,%s ,isUp:%b ,vm:%d", objArr2);
|
|
return anVar;
|
|
}
|
|
x.d("enExp args == null", new Object[0]);
|
|
return null;
|
|
}
|
|
|
|
private static am a(String str, Context context, String str2) {
|
|
FileInputStream fileInputStream;
|
|
if (str2 != null && context != null) {
|
|
x.c("zip %s", str2);
|
|
File file = new File(str2);
|
|
File file2 = new File(context.getCacheDir(), str);
|
|
if (!z.a(file, file2, 5000)) {
|
|
x.d("zip fail!", new Object[0]);
|
|
return null;
|
|
}
|
|
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
|
|
try {
|
|
fileInputStream = new FileInputStream(file2);
|
|
} catch (Throwable th) {
|
|
th = th;
|
|
fileInputStream = null;
|
|
}
|
|
try {
|
|
byte[] bArr = new byte[FileUtil.ZIP_BUFFER_SIZE];
|
|
while (true) {
|
|
int read = fileInputStream.read(bArr);
|
|
if (read <= 0) {
|
|
break;
|
|
}
|
|
byteArrayOutputStream.write(bArr, 0, read);
|
|
byteArrayOutputStream.flush();
|
|
}
|
|
byte[] byteArray = byteArrayOutputStream.toByteArray();
|
|
x.c("read bytes :%d", Integer.valueOf(byteArray.length));
|
|
am amVar = new am((byte) 2, file2.getName(), byteArray);
|
|
try {
|
|
fileInputStream.close();
|
|
} catch (IOException e) {
|
|
if (!x.a(e)) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
if (file2.exists()) {
|
|
x.c("del tmp", new Object[0]);
|
|
file2.delete();
|
|
}
|
|
return amVar;
|
|
} catch (Throwable th2) {
|
|
th = th2;
|
|
try {
|
|
if (!x.a(th)) {
|
|
th.printStackTrace();
|
|
}
|
|
if (fileInputStream != null) {
|
|
try {
|
|
fileInputStream.close();
|
|
} catch (IOException e2) {
|
|
if (!x.a(e2)) {
|
|
e2.printStackTrace();
|
|
}
|
|
}
|
|
}
|
|
if (file2.exists()) {
|
|
x.c("del tmp", new Object[0]);
|
|
file2.delete();
|
|
}
|
|
return null;
|
|
} catch (Throwable th3) {
|
|
if (fileInputStream != null) {
|
|
try {
|
|
fileInputStream.close();
|
|
} catch (IOException e3) {
|
|
if (!x.a(e3)) {
|
|
e3.printStackTrace();
|
|
}
|
|
}
|
|
}
|
|
if (file2.exists()) {
|
|
x.c("del tmp", new Object[0]);
|
|
file2.delete();
|
|
}
|
|
throw th3;
|
|
}
|
|
}
|
|
}
|
|
x.d("rqdp{ createZipAttachment sourcePath == null || context == null ,pls check}", new Object[0]);
|
|
return null;
|
|
}
|
|
|
|
public static void a(String str, String str2, String str3, String str4, String str5, CrashDetailBean crashDetailBean) {
|
|
String str6;
|
|
com.tencent.bugly.crashreport.common.info.a b = com.tencent.bugly.crashreport.common.info.a.b();
|
|
if (b == null) {
|
|
return;
|
|
}
|
|
x.e("#++++++++++Record By Bugly++++++++++#", new Object[0]);
|
|
x.e("# You can use Bugly(http:\\\\bugly.qq.com) to get more Crash Detail!", new Object[0]);
|
|
x.e("# PKG NAME: %s", b.c);
|
|
x.e("# APP VER: %s", b.j);
|
|
x.e("# LAUNCH TIME: %s", z.a(new Date(com.tencent.bugly.crashreport.common.info.a.b().a)));
|
|
x.e("# CRASH TYPE: %s", str);
|
|
x.e("# CRASH TIME: %s", str2);
|
|
x.e("# CRASH PROCESS: %s", str3);
|
|
x.e("# CRASH THREAD: %s", str4);
|
|
if (crashDetailBean != null) {
|
|
x.e("# REPORT ID: %s", crashDetailBean.c);
|
|
Object[] objArr = new Object[2];
|
|
objArr[0] = b.g;
|
|
objArr[1] = b.x().booleanValue() ? "ROOTED" : "UNROOT";
|
|
x.e("# CRASH DEVICE: %s %s", objArr);
|
|
x.e("# RUNTIME AVAIL RAM:%d ROM:%d SD:%d", Long.valueOf(crashDetailBean.C), Long.valueOf(crashDetailBean.D), Long.valueOf(crashDetailBean.E));
|
|
x.e("# RUNTIME TOTAL RAM:%d ROM:%d SD:%d", Long.valueOf(crashDetailBean.F), Long.valueOf(crashDetailBean.G), Long.valueOf(crashDetailBean.H));
|
|
if (!z.a(crashDetailBean.K)) {
|
|
x.e("# EXCEPTION FIRED BY %s %s", crashDetailBean.K, crashDetailBean.J);
|
|
} else if (crashDetailBean.b == 3) {
|
|
Object[] objArr2 = new Object[1];
|
|
if (crashDetailBean.O == null) {
|
|
str6 = "null";
|
|
} else {
|
|
str6 = crashDetailBean.O.get("BUGLY_CR_01");
|
|
}
|
|
objArr2[0] = str6;
|
|
x.e("# EXCEPTION ANR MESSAGE:\n %s", objArr2);
|
|
}
|
|
}
|
|
if (!z.a(str5)) {
|
|
x.e("# CRASH STACK: ", new Object[0]);
|
|
x.e(str5, new Object[0]);
|
|
}
|
|
x.e("#++++++++++++++++++++++++++++++++++++++++++#", new Object[0]);
|
|
}
|
|
}
|