174 lines
8.9 KiB
Java
174 lines
8.9 KiB
Java
package com.google.firebase.crashlytics;
|
|
|
|
import android.content.Context;
|
|
import android.content.pm.PackageManager;
|
|
import com.google.android.gms.tasks.Continuation;
|
|
import com.google.android.gms.tasks.Task;
|
|
import com.google.android.gms.tasks.Tasks;
|
|
import com.google.firebase.FirebaseApp;
|
|
import com.google.firebase.analytics.connector.AnalyticsConnector;
|
|
import com.google.firebase.crashlytics.internal.CrashlyticsNativeComponent;
|
|
import com.google.firebase.crashlytics.internal.CrashlyticsNativeComponentDeferredProxy;
|
|
import com.google.firebase.crashlytics.internal.DevelopmentPlatformProvider;
|
|
import com.google.firebase.crashlytics.internal.Logger;
|
|
import com.google.firebase.crashlytics.internal.RemoteConfigDeferredProxy;
|
|
import com.google.firebase.crashlytics.internal.common.AppData;
|
|
import com.google.firebase.crashlytics.internal.common.BuildIdInfo;
|
|
import com.google.firebase.crashlytics.internal.common.CommonUtils;
|
|
import com.google.firebase.crashlytics.internal.common.CrashlyticsAppQualitySessionsSubscriber;
|
|
import com.google.firebase.crashlytics.internal.common.CrashlyticsCore;
|
|
import com.google.firebase.crashlytics.internal.common.DataCollectionArbiter;
|
|
import com.google.firebase.crashlytics.internal.common.ExecutorUtils;
|
|
import com.google.firebase.crashlytics.internal.common.IdManager;
|
|
import com.google.firebase.crashlytics.internal.network.HttpRequestFactory;
|
|
import com.google.firebase.crashlytics.internal.persistence.FileStore;
|
|
import com.google.firebase.crashlytics.internal.settings.SettingsController;
|
|
import com.google.firebase.inject.Deferred;
|
|
import com.google.firebase.installations.FirebaseInstallationsApi;
|
|
import com.google.firebase.remoteconfig.interop.FirebaseRemoteConfigInterop;
|
|
import com.google.firebase.sessions.api.FirebaseSessionsDependencies;
|
|
import java.util.List;
|
|
import java.util.concurrent.Callable;
|
|
import java.util.concurrent.ExecutorService;
|
|
|
|
/* loaded from: classes3.dex */
|
|
public class FirebaseCrashlytics {
|
|
static final int APP_EXCEPTION_CALLBACK_TIMEOUT_MS = 500;
|
|
static final String FIREBASE_CRASHLYTICS_ANALYTICS_ORIGIN = "clx";
|
|
static final String LEGACY_CRASH_ANALYTICS_ORIGIN = "crash";
|
|
final CrashlyticsCore core;
|
|
|
|
private FirebaseCrashlytics(CrashlyticsCore crashlyticsCore) {
|
|
this.core = crashlyticsCore;
|
|
}
|
|
|
|
public static FirebaseCrashlytics getInstance() {
|
|
FirebaseCrashlytics firebaseCrashlytics = (FirebaseCrashlytics) FirebaseApp.getInstance().get(FirebaseCrashlytics.class);
|
|
if (firebaseCrashlytics != null) {
|
|
return firebaseCrashlytics;
|
|
}
|
|
throw new NullPointerException("FirebaseCrashlytics component is not present.");
|
|
}
|
|
|
|
public static FirebaseCrashlytics init(FirebaseApp firebaseApp, FirebaseInstallationsApi firebaseInstallationsApi, Deferred<CrashlyticsNativeComponent> deferred, Deferred<AnalyticsConnector> deferred2, Deferred<FirebaseRemoteConfigInterop> deferred3) {
|
|
Context applicationContext = firebaseApp.getApplicationContext();
|
|
String packageName = applicationContext.getPackageName();
|
|
Logger.getLogger().i("Initializing Firebase Crashlytics " + CrashlyticsCore.getVersion() + " for " + packageName);
|
|
FileStore fileStore = new FileStore(applicationContext);
|
|
DataCollectionArbiter dataCollectionArbiter = new DataCollectionArbiter(firebaseApp);
|
|
IdManager idManager = new IdManager(applicationContext, packageName, firebaseInstallationsApi, dataCollectionArbiter);
|
|
CrashlyticsNativeComponentDeferredProxy crashlyticsNativeComponentDeferredProxy = new CrashlyticsNativeComponentDeferredProxy(deferred);
|
|
AnalyticsDeferredProxy analyticsDeferredProxy = new AnalyticsDeferredProxy(deferred2);
|
|
ExecutorService buildSingleThreadExecutorService = ExecutorUtils.buildSingleThreadExecutorService("Crashlytics Exception Handler");
|
|
CrashlyticsAppQualitySessionsSubscriber crashlyticsAppQualitySessionsSubscriber = new CrashlyticsAppQualitySessionsSubscriber(dataCollectionArbiter, fileStore);
|
|
FirebaseSessionsDependencies.register(crashlyticsAppQualitySessionsSubscriber);
|
|
final CrashlyticsCore crashlyticsCore = new CrashlyticsCore(firebaseApp, idManager, crashlyticsNativeComponentDeferredProxy, dataCollectionArbiter, analyticsDeferredProxy.getDeferredBreadcrumbSource(), analyticsDeferredProxy.getAnalyticsEventLogger(), fileStore, buildSingleThreadExecutorService, crashlyticsAppQualitySessionsSubscriber, new RemoteConfigDeferredProxy(deferred3));
|
|
String applicationId = firebaseApp.getOptions().getApplicationId();
|
|
String mappingFileId = CommonUtils.getMappingFileId(applicationContext);
|
|
List<BuildIdInfo> buildIdInfo = CommonUtils.getBuildIdInfo(applicationContext);
|
|
Logger.getLogger().d("Mapping file ID is: " + mappingFileId);
|
|
for (BuildIdInfo buildIdInfo2 : buildIdInfo) {
|
|
Logger.getLogger().d("Build id for " + buildIdInfo2.getLibraryName() + " on " + buildIdInfo2.getArch() + ": " + buildIdInfo2.getBuildId());
|
|
}
|
|
try {
|
|
AppData create = AppData.create(applicationContext, idManager, applicationId, mappingFileId, buildIdInfo, new DevelopmentPlatformProvider(applicationContext));
|
|
Logger.getLogger().v("Installer package name is: " + create.installerPackageName);
|
|
ExecutorService buildSingleThreadExecutorService2 = ExecutorUtils.buildSingleThreadExecutorService("com.google.firebase.crashlytics.startup");
|
|
final SettingsController create2 = SettingsController.create(applicationContext, applicationId, idManager, new HttpRequestFactory(), create.versionCode, create.versionName, fileStore, dataCollectionArbiter);
|
|
create2.loadSettingsData(buildSingleThreadExecutorService2).continueWith(buildSingleThreadExecutorService2, new Continuation<Void, Object>() { // from class: com.google.firebase.crashlytics.FirebaseCrashlytics.1
|
|
@Override // com.google.android.gms.tasks.Continuation
|
|
public Object then(Task<Void> task) throws Exception {
|
|
if (task.isSuccessful()) {
|
|
return null;
|
|
}
|
|
Logger.getLogger().e("Error fetching settings.", task.getException());
|
|
return null;
|
|
}
|
|
});
|
|
final boolean onPreExecute = crashlyticsCore.onPreExecute(create, create2);
|
|
Tasks.call(buildSingleThreadExecutorService2, new Callable<Void>() { // from class: com.google.firebase.crashlytics.FirebaseCrashlytics.2
|
|
@Override // java.util.concurrent.Callable
|
|
public Void call() throws Exception {
|
|
if (!onPreExecute) {
|
|
return null;
|
|
}
|
|
crashlyticsCore.doBackgroundInitializationAsync(create2);
|
|
return null;
|
|
}
|
|
});
|
|
return new FirebaseCrashlytics(crashlyticsCore);
|
|
} catch (PackageManager.NameNotFoundException e4) {
|
|
Logger.getLogger().e("Error retrieving app package info.", e4);
|
|
return null;
|
|
}
|
|
}
|
|
|
|
public Task<Boolean> checkForUnsentReports() {
|
|
return this.core.checkForUnsentReports();
|
|
}
|
|
|
|
public void deleteUnsentReports() {
|
|
this.core.deleteUnsentReports();
|
|
}
|
|
|
|
public boolean didCrashOnPreviousExecution() {
|
|
return this.core.didCrashOnPreviousExecution();
|
|
}
|
|
|
|
public void log(String str) {
|
|
this.core.log(str);
|
|
}
|
|
|
|
public void recordException(Throwable th) {
|
|
if (th == null) {
|
|
Logger.getLogger().w("A null value was passed to recordException. Ignoring.");
|
|
} else {
|
|
this.core.logException(th);
|
|
}
|
|
}
|
|
|
|
public void sendUnsentReports() {
|
|
this.core.sendUnsentReports();
|
|
}
|
|
|
|
public void setCrashlyticsCollectionEnabled(boolean z3) {
|
|
this.core.setCrashlyticsCollectionEnabled(Boolean.valueOf(z3));
|
|
}
|
|
|
|
public void setCustomKey(String str, boolean z3) {
|
|
this.core.setCustomKey(str, Boolean.toString(z3));
|
|
}
|
|
|
|
public void setCustomKeys(CustomKeysAndValues customKeysAndValues) {
|
|
this.core.setCustomKeys(customKeysAndValues.keysAndValues);
|
|
}
|
|
|
|
public void setUserId(String str) {
|
|
this.core.setUserId(str);
|
|
}
|
|
|
|
public void setCrashlyticsCollectionEnabled(Boolean bool) {
|
|
this.core.setCrashlyticsCollectionEnabled(bool);
|
|
}
|
|
|
|
public void setCustomKey(String str, double d4) {
|
|
this.core.setCustomKey(str, Double.toString(d4));
|
|
}
|
|
|
|
public void setCustomKey(String str, float f2) {
|
|
this.core.setCustomKey(str, Float.toString(f2));
|
|
}
|
|
|
|
public void setCustomKey(String str, int i) {
|
|
this.core.setCustomKey(str, Integer.toString(i));
|
|
}
|
|
|
|
public void setCustomKey(String str, long j4) {
|
|
this.core.setCustomKey(str, Long.toString(j4));
|
|
}
|
|
|
|
public void setCustomKey(String str, String str2) {
|
|
this.core.setCustomKey(str, str2);
|
|
}
|
|
}
|