同程有借 v1.0.0版本的 MD5 值为:e33397cdbab33543d0c134ec96d77fb8

以下内容为反编译后的 a.java 源代码,内容仅作参考


package com.bonree.sdk.al;

import android.os.Looper;
import android.text.TextUtils;
import com.bonree.sdk.agent.Agent;
import com.bonree.sdk.agent.business.entity.BaseEventInfo;
import com.bonree.sdk.agent.business.entity.CrashEventInfoBean;
import com.bonree.sdk.agent.business.entity.EventBean;
import com.bonree.sdk.agent.business.entity.ThreadDumpInfoBean;
import com.bonree.sdk.agent.engine.crash.NativeCrashEngine;
import com.bonree.sdk.agent.engine.crash.c;
import com.bonree.sdk.aj.c;
import com.bonree.sdk.b.a;
import com.bonree.sdk.bi.i;
import com.bonree.sdk.bz.af;
import com.bonree.sdk.e.d;
import com.huawei.agconnect.exception.AGCServerException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicLong;
import java.util.concurrent.locks.ReadWriteLock;
public final class a extends com.bonree.sdk.aj.b implements com.bonree.sdk.agent.engine.crash.b, c {
    private static final String f3561h = "CrashService";
    private static final byte f3562i = 0;
    private static final byte f3563j = 1;
    private static final byte f3564k = 2;
    private static final int f3565l = 200;
    private static final int f3566m = 1000;
    private static final int f3567n = 1;
    private static final int f3568o = 2;
    private static final int f3569p = 3;
    private static final int f3570q = 4;
    private volatile EventBean A;
    public volatile boolean f3571g;
    private final String f3572r;
    private byte f3573s;
    private final AtomicBoolean f3574t;
    private final AtomicBoolean f3575u;
    private final AtomicBoolean f3576v;
    private final AtomicLong f3577w;
    private com.bonree.sdk.aq.a f3578x;
    private com.bonree.sdk.ap.a f3579y;
    private ReadWriteLock f3580z;

    public interface InterfaceC0051a {
        void a();
    }

    public a(d dVar) {
        super(dVar);
        this.f3572r = "Crash";
        this.A = new EventBean();
        this.f3574t = new AtomicBoolean(true);
        this.f3575u = new AtomicBoolean(true);
        this.f3576v = new AtomicBoolean(true);
        this.f3577w = new AtomicLong(86400000L);
        this.f3573s = (byte) 0;
        this.f3546f = Collections.synchronizedList(new ArrayList());
    }

    private void b(boolean z8) {
        this.f3575u.getAndSet(z8);
    }

    private static String c(String str) {
        return str == null ? "" : str;
    }

    private EventBean d(int i9) {
        Integer num;
        if (this.A == null) {
            return null;
        }
        synchronized (this) {
            if (this.A == null) {
                return null;
            }
            if (this.A.mEventTime < 0) {
                this.A.correctEventTime(d(this.A.mEventTime));
            }
            if (this.A.mEventInfo == null || !(this.A.mEventInfo instanceof CrashEventInfoBean) || (num = ((CrashEventInfoBean) this.A.mEventInfo).crashPlatform) == null || num.intValue() != i9) {
                return null;
            }
            EventBean eventBean = this.A;
            this.A = null;
            return eventBean;
        }
    }

    private synchronized String l() {
        return NativeCrashEngine.getBrCrashVersion();
    }

    private CrashEventInfoBean m() {
        CrashEventInfoBean crashEventInfoBean = new CrashEventInfoBean();
        if (this.f3574t.get()) {
            this.f4023c.c("try to get logcat...", new Object[0]);
            String a9 = af.a((int) AGCServerException.AUTHENTICATION_INVALID);
            crashEventInfoBean.systemLog = a9;
            if (af.b(a9)) {
                crashEventInfoBean.systemLog = null;
            }
            this.f4023c.c("get logcat end", new Object[0]);
        } else {
            crashEventInfoBean.systemLog = null;
        }
        return crashEventInfoBean;
    }

    private void n() {
        if (this.f3578x == null) {
            this.f3578x = new com.bonree.sdk.aq.a(this.f4022b.c().getFilesDir().getAbsolutePath(), this.f4022b.h());
        }
    }

    private synchronized boolean o() {
        return this.f3573s == 2;
    }

    private synchronized boolean p() {
        return this.f3573s == 1;
    }

    private synchronized boolean q() {
        return this.f3573s == 0;
    }

    public final CrashEventInfoBean a(CrashEventInfoBean crashEventInfoBean) {
        if (crashEventInfoBean != null) {
            try {
                if (!af.b(crashEventInfoBean.nativeCrashLogPath)) {
                    n();
                    return this.f3578x.a(crashEventInfoBean);
                }
            } catch (Throwable th) {
                this.f4023c.a("CrashService updateCrashEvent error %s", th);
                return crashEventInfoBean;
            }
        }
        this.f4023c.c("CrashServiceupdateCrashEventBean null", new Object[0]);
        return null;
    }

    public final void c(int i9) {
        if (i9 < 0) {
            i9 = 0;
        }
        this.f3577w.getAndSet(i9 * 60 * 60 * 1000);
    }

    public final EventBean f() {
        return d(2);
    }

    public final EventBean g() {
        return d(1);
    }

    public final synchronized List<EventBean> h() {
        e();
        List<EventBean> list = this.f3546f;
        if (list == null || list.size() <= 0) {
            return null;
        }
        ArrayList arrayList = new ArrayList(this.f3546f);
        this.f3546f.clear();
        return arrayList;
    }

    public final synchronized com.bonree.sdk.ap.a i() {
        com.bonree.sdk.ap.a aVar = this.f3579y;
        if (aVar != null) {
            return aVar;
        }
        com.bonree.sdk.e.b bVar = this.f4022b;
        if (bVar != null && bVar.c() != null) {
            com.bonree.sdk.ap.a a9 = com.bonree.sdk.ap.a.a(this.f4022b.c());
            if (a9 != null && a9.f3632a) {
                this.f3579y = a9;
                return a9;
            }
            n();
            if (this.f3578x.b()) {
                this.f4023c.d("native crash has occurs!", new Object[0]);
                com.bonree.sdk.ap.a a10 = com.bonree.sdk.ap.a.a(this.f4022b.c());
                if (a10 != null && a10.f3632a) {
                    this.f3579y = a10;
                    return a10;
                }
            }
            com.bonree.sdk.ap.a aVar2 = new com.bonree.sdk.ap.a(false, null, null, 0L, null);
            this.f3579y = aVar2;
            return aVar2;
        }
        this.f4023c.d("check agent context fail when checking self crash state", new Object[0]);
        return new com.bonree.sdk.ap.a(false, null, null, 0L, null);
    }

    public final synchronized void j() {
        com.bonree.sdk.e.b bVar = this.f4022b;
        if (bVar != null && bVar.c() != null) {
            com.bonree.sdk.ap.a aVar = new com.bonree.sdk.ap.a(false, null, null, 0L, null);
            this.f3579y = aVar;
            aVar.b(this.f4022b.c());
            return;
        }
        this.f4023c.d("check agent context fail when reseting self crash state", new Object[0]);
    }

    public final boolean k() {
        return this.f3571g;
    }

    private void b(com.bonree.sdk.an.c cVar) {
        if (cVar == null || af.b(cVar.f3611a)) {
            return;
        }
        a(cVar.f3612b, cVar.f3613c, (com.bonree.sdk.ao.a) null, cVar.f3611a);
        try {
            Thread.sleep(1000L);
        } catch (InterruptedException unused) {
        }
    }

    private void b(com.bonree.sdk.an.b bVar) {
        if (bVar == null || bVar.f3609b == null) {
            return;
        }
        com.bonree.sdk.ao.a a9 = new com.bonree.sdk.ao.b(this.f3576v.get()).a(bVar.f3609b);
        this.f4023c.a("parse crash result:%s", a9);
        a(bVar.f3608a.getId(), bVar.f3608a.getName(), a9, (String) null);
    }

    private void a(boolean z8) {
        this.f3576v.getAndSet(z8);
        n();
        this.f3578x.a(z8);
    }

    @Override
    public final void a(com.bonree.sdk.an.c cVar) {
        this.f4023c.d("native crash callback! data: %s ", cVar);
        if (o()) {
            this.f4023c.d("native crash callback will be returned! isStop:true", new Object[0]);
        } else if (cVar == null || af.b(cVar.f3611a)) {
        } else {
            a(cVar.f3612b, cVar.f3613c, (com.bonree.sdk.ao.a) null, cVar.f3611a);
            try {
                Thread.sleep(1000L);
            } catch (InterruptedException unused) {
            }
        }
    }

    public final void b(String str) {
        if (p()) {
            for (EventBean eventBean : i.a(str, "crash")) {
                if (200 <= this.f3546f.size()) {
                    this.f4023c.c("CrashService size:%d >limit:%d", Integer.valueOf(this.f3546f.size()), 200);
                    EventBean eventBean2 = this.f3546f.get(0);
                    if (eventBean2 != null) {
                        BaseEventInfo baseEventInfo = eventBean2.mEventInfo;
                        if ((baseEventInfo instanceof CrashEventInfoBean) && ((CrashEventInfoBean) baseEventInfo).iscustom) {
                            this.f3546f.remove(0);
                        }
                    }
                    this.f3546f.remove(1);
                }
                eventBean.mEventTime = -eventBean.mEventTime;
                eventBean.mStateIndex = eventBean.getStateIndex();
                CrashEventInfoBean crashEventInfoBean = (CrashEventInfoBean) eventBean.mEventInfo;
                crashEventInfoBean.crashThreadId = String.valueOf(Thread.currentThread().getId());
                crashEventInfoBean.setAppStateBackground(com.bonree.sdk.e.a.F().R());
                crashEventInfoBean.appLaunchTime = com.bonree.sdk.e.a.B();
                eventBean.mEventInfo = crashEventInfoBean;
                eventBean.uploadStateKey();
                eventBean.mTraceInfoList = com.bonree.sdk.be.c.h().f();
                a(eventBean);
                this.f4023c.c("eventBean=crash : %s", eventBean);
                com.bonree.sdk.aj.c.b(c.b.CRASH, eventBean);
            }
        }
    }

    private void a(long j9, String str, com.bonree.sdk.ao.a aVar, String str2) {
        CrashEventInfoBean crashEventInfoBean;
        if (j9 < 0 || af.b(str)) {
            return;
        }
        synchronized (this) {
            if (this.A == null) {
                this.A = new EventBean();
            }
            this.A.mEventType = "crash";
            this.A.mStateIndex = this.A.getStateIndex();
            if (aVar != null) {
                crashEventInfoBean = m();
                crashEventInfoBean.crashPlatform = 2;
            } else {
                crashEventInfoBean = new CrashEventInfoBean();
                crashEventInfoBean.crashPlatform = 1;
            }
            CrashEventInfoBean crashEventInfoBean2 = crashEventInfoBean;
            this.A.mEventTime = d();
            crashEventInfoBean2.appLaunchTime = com.bonree.sdk.e.a.B();
            crashEventInfoBean2.setAppStateBackground(com.bonree.sdk.e.a.F().R());
            this.A.mEventInfo = crashEventInfoBean2;
            if (aVar != null && aVar.f3620f) {
                a(com.bonree.sdk.c.a.c(this.A.mEventTime), aVar.f3617c);
                this.f3571g = aVar.f3620f;
            }
            crashEventInfoBean2.mainThreadId = String.valueOf(Looper.getMainLooper().getThread().getId());
            crashEventInfoBean2.threadDumpInfo = new ArrayList();
            Map<Thread, StackTraceElement[]> a9 = com.bonree.sdk.at.a.a(j9);
            Thread thread = Looper.getMainLooper().getThread();
            if (a9.isEmpty() && !a9.containsKey(thread)) {
                a9.put(thread, thread.getStackTrace());
            }
            crashEventInfoBean2.crashThreadId = a(aVar, crashEventInfoBean2, j9, str, str2, a9);
            crashEventInfoBean2.threadDumpInfo.addAll(com.bonree.sdk.at.a.b(a9, str));
            if (aVar != null) {
                crashEventInfoBean2.causedBy = aVar.f3617c;
                crashEventInfoBean2.type = aVar.f3615a;
            }
            this.A.uploadStateKey();
            this.A.mTraceInfoList = com.bonree.sdk.be.c.h().f();
            if (crashEventInfoBean2.crashPlatform.intValue() == 1) {
                com.bonree.sdk.be.c.h().g();
            }
            com.bonree.sdk.aj.c.b(c.b.CRASH, this.A);
            this.f4023c.c("CrashService deal crash event finish!!!!", new Object[0]);
        }
    }

    public final void b(long j9, String str, String str2, String str3) {
        a(j9, str, str2, str3, 4);
    }

    @Override
    public final synchronized boolean b() {
        if (!q() && !o()) {
            a("Crash", a.EnumC0053a.f4029d);
            this.f3573s = (byte) 2;
            com.bonree.sdk.agent.engine.crash.d.a().unRegisterService(this);
            NativeCrashEngine.getInstance().unRegisterService(this);
            this.f3546f.clear();
            this.f3578x.d();
            a("Crash", a.EnumC0053a.f4030e);
            return true;
        }
        this.f4023c.d("CrashService no need stoped! isInit:%b, isStop:%b", Boolean.valueOf(q()), Boolean.valueOf(o()));
        return false;
    }

    private static String a(com.bonree.sdk.ao.a aVar, CrashEventInfoBean crashEventInfoBean, long j9, String str, String str2, Map<Thread, StackTraceElement[]> map) {
        ThreadDumpInfoBean threadDumpInfoBean = new ThreadDumpInfoBean();
        ThreadDumpInfoBean threadDumpInfoBean2 = null;
        if (aVar != null) {
            if (!af.b(aVar.f3616b)) {
                threadDumpInfoBean.mDumpInfo = c(aVar.f3616b);
            }
            crashEventInfoBean.nativeCrashLogPath = null;
        } else {
            crashEventInfoBean.nativeCrashLogPath = str2;
            ThreadDumpInfoBean a9 = com.bonree.sdk.at.a.a(map, str);
            if (a9 == null && "main".equals(str)) {
                a9 = com.bonree.sdk.at.a.a(map, true);
            }
            threadDumpInfoBean2 = a9;
            if (threadDumpInfoBean2 != null && !af.b(threadDumpInfoBean2.mDumpInfo)) {
                threadDumpInfoBean.mDumpInfo = threadDumpInfoBean2.mDumpInfo;
            }
        }
        if ("main".equals(str)) {
            threadDumpInfoBean.mThreadId = String.valueOf(Looper.getMainLooper().getThread().getId());
        } else if (aVar == null && threadDumpInfoBean2 != null && !af.b(String.valueOf(threadDumpInfoBean2.mThreadId))) {
            threadDumpInfoBean.mThreadId = threadDumpInfoBean2.mThreadId;
        } else {
            threadDumpInfoBean.mThreadId = String.valueOf(j9);
        }
        threadDumpInfoBean.mThreadName = str;
        List<ThreadDumpInfoBean> list = crashEventInfoBean.threadDumpInfo;
        if (list != null) {
            list.add(threadDumpInfoBean);
        }
        return String.valueOf(threadDumpInfoBean.mThreadId);
    }

    private void a(long j9, String str) {
        com.bonree.sdk.e.b bVar = this.f4022b;
        if (bVar != null && bVar.c() != null) {
            String agentVersion = Agent.getAgentVersion();
            String b9 = this.f4022b.b();
            if (!af.b(str)) {
                this.f4023c.c("self java crash time:%s,crash causeby:%s", Long.valueOf(j9), str);
            }
            new com.bonree.sdk.ap.a(true, agentVersion, b9, j9, str).b(this.f4022b.c());
            return;
        }
        this.f4023c.d("check agent context fail while handling self crash occurs", new Object[0]);
    }

    @Override
    public final void a(com.bonree.sdk.an.b bVar) {
        this.f4023c.d("java crash callback! data:%s", bVar);
        if (o()) {
            this.f4023c.d("java crash callback will be returned! isStop:true", new Object[0]);
        } else if (bVar == null || bVar.f3609b == null) {
        } else {
            com.bonree.sdk.ao.a a9 = new com.bonree.sdk.ao.b(this.f3576v.get()).a(bVar.f3609b);
            this.f4023c.a("parse crash result:%s", a9);
            a(bVar.f3608a.getId(), bVar.f3608a.getName(), a9, (String) null);
        }
    }

    public final void a(String str, String str2, String str3) {
        if (!p() || TextUtils.isEmpty(str)) {
            return;
        }
        if (200 <= this.f3546f.size()) {
            this.f4023c.c("CrashService size:%d >limit:%d", Integer.valueOf(this.f3546f.size()), 200);
            EventBean eventBean = this.f3546f.get(0);
            if (eventBean != null) {
                BaseEventInfo baseEventInfo = eventBean.mEventInfo;
                if ((baseEventInfo instanceof CrashEventInfoBean) && ((CrashEventInfoBean) baseEventInfo).iscustom) {
                    this.f3546f.remove(0);
                }
            }
            this.f3546f.remove(1);
        }
        EventBean eventBean2 = new EventBean();
        eventBean2.mEventTime = d();
        eventBean2.mEventType = "crash";
        eventBean2.mStateIndex = eventBean2.getStateIndex();
        CrashEventInfoBean crashEventInfoBean = new CrashEventInfoBean();
        crashEventInfoBean.type = str;
        crashEventInfoBean.causedBy = str2;
        crashEventInfoBean.param = str3;
        crashEventInfoBean.iscustom = true;
        crashEventInfoBean.crashThreadId = String.valueOf(Thread.currentThread().getId());
        crashEventInfoBean.setAppStateBackground(com.bonree.sdk.e.a.F().R());
        crashEventInfoBean.appLaunchTime = com.bonree.sdk.e.a.B();
        eventBean2.mEventInfo = crashEventInfoBean;
        eventBean2.uploadStateKey();
        eventBean2.mTraceInfoList = com.bonree.sdk.be.c.h().f();
        this.f3546f.add(eventBean2);
        com.bonree.sdk.aj.c.b(c.b.CRASH, eventBean2);
    }

    public final void a(long j9, String str, String str2, String str3) {
        a(j9, str, str2, str3, 3);
    }

    private void a(long j9, String str, String str2, String str3, int i9) {
        try {
            if (p() && !TextUtils.isEmpty(str)) {
                EventBean eventBean = new EventBean();
                eventBean.mEventTime = (-j9) * 1000;
                eventBean.mEventType = "crash";
                eventBean.mStateIndex = eventBean.getStateIndex();
                CrashEventInfoBean crashEventInfoBean = new CrashEventInfoBean();
                crashEventInfoBean.type = str;
                crashEventInfoBean.causedBy = str2;
                if (!TextUtils.isEmpty(str3)) {
                    crashEventInfoBean.threadDumpInfo = new ArrayList();
                    ThreadDumpInfoBean threadDumpInfoBean = new ThreadDumpInfoBean();
                    if (!TextUtils.isEmpty(str2)) {
                        str3 = str2 + "\r\n" + str3;
                    }
                    if (str3.length() > 10000) {
                        str3 = str3.substring(0, 10000);
                    }
                    threadDumpInfoBean.mDumpInfo = str3;
                    threadDumpInfoBean.mThreadId = String.valueOf(Thread.currentThread().getId());
                    threadDumpInfoBean.mThreadName = Thread.currentThread().getName();
                    crashEventInfoBean.threadDumpInfo.add(threadDumpInfoBean);
                }
                crashEventInfoBean.crashThreadId = String.valueOf(Thread.currentThread().getId());
                crashEventInfoBean.mainThreadId = String.valueOf(Looper.getMainLooper().getThread().getId());
                crashEventInfoBean.crashPlatform = Integer.valueOf(i9);
                crashEventInfoBean.iscustom = false;
                crashEventInfoBean.setAppStateBackground(com.bonree.sdk.e.a.F().R());
                crashEventInfoBean.appLaunchTime = com.bonree.sdk.e.a.B();
                eventBean.mEventInfo = crashEventInfoBean;
                if (200 <= this.f3546f.size()) {
                    this.f4023c.c("CrashService size:%d >limit:%d", Integer.valueOf(this.f3546f.size()), 200);
                    EventBean eventBean2 = this.f3546f.get(0);
                    if (eventBean2 != null) {
                        BaseEventInfo baseEventInfo = eventBean2.mEventInfo;
                        if ((baseEventInfo instanceof CrashEventInfoBean) && ((CrashEventInfoBean) baseEventInfo).iscustom) {
                            this.f3546f.remove(0);
                        }
                    }
                    this.f3546f.remove(1);
                }
                eventBean.uploadStateKey();
                eventBean.mTraceInfoList = com.bonree.sdk.be.c.h().f();
                a(eventBean);
                com.bonree.sdk.aj.c.b(c.b.CRASH, eventBean);
            }
        } catch (Throwable th) {
            this.f4023c.e("CrashService addOtherCrash error:" + th.toString(), new Object[0]);
        }
    }

    @Override
    public final synchronized boolean a() {
        if (p()) {
            a("Crash", a.EnumC0053a.f4027b);
            return false;
        }
        a("Crash", a.EnumC0053a.f4026a);
        this.f3573s = (byte) 1;
        n();
        com.bonree.sdk.agent.engine.crash.d.a().registerService(this);
        NativeCrashEngine.getInstance().initEngine(false, this.f3578x.a());
        NativeCrashEngine.getInstance().registerService((com.bonree.sdk.agent.engine.crash.c) this);
        this.f3578x.c();
        a("Crash", a.EnumC0053a.f4028c);
        return true;
    }
}