Skip to content

Add development_platform for Unity crash reports #2108

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
Oct 27, 2020
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -218,7 +218,8 @@ public CrashlyticsController build() {
"installerPackageName",
"packageName",
"versionCode",
"versionName");
"versionName",
unityVersionProvider);

final CrashlyticsController controller =
new CrashlyticsController(
Expand All @@ -233,7 +234,6 @@ public CrashlyticsController build() {
reportManager,
reportUploaderProvider,
nativeComponent,
unityVersionProvider,
analyticsEventLogger,
testSettingsDataProvider);
return controller;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@
import com.google.firebase.crashlytics.internal.model.CrashlyticsReport;
import com.google.firebase.crashlytics.internal.model.CrashlyticsReport.Session.Event.Application.Execution;
import com.google.firebase.crashlytics.internal.stacktrace.StackTraceTrimmingStrategy;
import com.google.firebase.crashlytics.internal.unity.ResourceUnityVersionProvider;
import com.google.firebase.crashlytics.internal.unity.UnityVersionProvider;
import com.google.firebase.installations.FirebaseInstallationsApi;
import java.util.List;
import org.junit.Before;
Expand Down Expand Up @@ -55,7 +57,9 @@ public void setUp() throws Exception {
final Context context = ApplicationProvider.getApplicationContext();
final IdManager idManager =
new IdManager(context, context.getPackageName(), installationsApiMock);
final AppData appData = AppData.create(context, idManager, "googleAppId", "buildId");
final UnityVersionProvider unityVersionProvider = new ResourceUnityVersionProvider(context);
final AppData appData =
AppData.create(context, idManager, "googleAppId", "buildId", unityVersionProvider);
dataCapture =
new CrashlyticsReportDataCapture(context, idManager, appData, stackTraceTrimmingStrategy);
timestamp = System.currentTimeMillis();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import com.google.firebase.crashlytics.internal.unity.UnityVersionProvider;

/** Carries static information about the app. */
class AppData {
Expand All @@ -29,8 +30,14 @@ class AppData {
public final String versionCode;
public final String versionName;

public final UnityVersionProvider unityVersionProvider;

public static AppData create(
Context context, IdManager idManager, String googleAppId, String buildId)
Context context,
IdManager idManager,
String googleAppId,
String buildId,
UnityVersionProvider unityVersionProvider)
throws PackageManager.NameNotFoundException {
final String packageName = context.getPackageName();
final String installerPackageName = idManager.getInstallerPackageName();
Expand All @@ -41,7 +48,13 @@ public static AppData create(
packageInfo.versionName == null ? IdManager.DEFAULT_VERSION_NAME : packageInfo.versionName;

return new AppData(
googleAppId, buildId, installerPackageName, packageName, versionCode, versionName);
googleAppId,
buildId,
installerPackageName,
packageName,
versionCode,
versionName,
unityVersionProvider);
}

public AppData(
Expand All @@ -50,12 +63,14 @@ public AppData(
String installerPackageName,
String packageName,
String versionCode,
String versionName) {
String versionName,
UnityVersionProvider unityVersionProvider) {
this.googleAppId = googleAppId;
this.buildId = buildId;
this.installerPackageName = installerPackageName;
this.packageName = packageName;
this.versionCode = versionCode;
this.versionName = versionName;
this.unityVersionProvider = unityVersionProvider;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,6 @@
import com.google.firebase.crashlytics.internal.stacktrace.RemoveRepeatsStrategy;
import com.google.firebase.crashlytics.internal.stacktrace.StackTraceTrimmingStrategy;
import com.google.firebase.crashlytics.internal.stacktrace.TrimmedThrowableData;
import com.google.firebase.crashlytics.internal.unity.UnityVersionProvider;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
Expand Down Expand Up @@ -294,7 +293,6 @@ public int compare(File file1, File file2) {
ReportManager reportManager,
ReportUploader.Provider reportUploaderProvider,
CrashlyticsNativeComponent nativeComponent,
UnityVersionProvider unityVersionProvider,
AnalyticsEventLogger analyticsEventLogger,
SettingsDataProvider settingsDataProvider) {
this.context = context;
Expand All @@ -312,7 +310,7 @@ public int compare(File file1, File file2) {
this.reportUploaderProvider = defaultReportUploader();
}
this.nativeComponent = nativeComponent;
this.unityVersion = unityVersionProvider.getUnityVersion();
this.unityVersion = appData.unityVersionProvider.getUnityVersion();
this.analyticsEventLogger = analyticsEventLogger;

this.userMetadata = new UserMetadata();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -134,8 +134,9 @@ public boolean onPreExecute(SettingsDataProvider settingsProvider) {

final HttpRequestFactory httpRequestFactory = new HttpRequestFactory();

final AppData appData = AppData.create(context, idManager, googleAppId, mappingFileId);
final UnityVersionProvider unityVersionProvider = new ResourceUnityVersionProvider(context);
final AppData appData =
AppData.create(context, idManager, googleAppId, mappingFileId, unityVersionProvider);

Logger.getLogger().d("Installer package name is: " + appData.installerPackageName);

Expand All @@ -152,7 +153,6 @@ public boolean onPreExecute(SettingsDataProvider settingsProvider) {
null,
null,
nativeComponent,
unityVersionProvider,
analyticsEventLogger,
settingsProvider);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -137,12 +137,20 @@ private CrashlyticsReport.Session populateSessionData(String identifier, long ti
}

private CrashlyticsReport.Session.Application populateSessionApplicationData() {
return CrashlyticsReport.Session.Application.builder()
.setIdentifier(idManager.getAppIdentifier())
.setVersion(appData.versionCode)
.setDisplayVersion(appData.versionName)
.setInstallationUuid(idManager.getCrashlyticsInstallId())
.build();
CrashlyticsReport.Session.Application.Builder builder =
CrashlyticsReport.Session.Application.builder()
.setIdentifier(idManager.getAppIdentifier())
.setVersion(appData.versionCode)
.setDisplayVersion(appData.versionName)
.setInstallationUuid(idManager.getCrashlyticsInstallId());

final String unityVersion = appData.unityVersionProvider.getUnityVersion();
if (unityVersion != null) {
builder
.setDevelopmentPlatform(CrashlyticsReport.DEVELOPMENT_PLATFORM_UNITY)
.setDevelopmentPlatformVersion(unityVersion);
}
return builder.build();
}

private CrashlyticsReport.Session.OperatingSystem populateSessionOperatingSystemData() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,8 @@ public enum Type {
NATIVE
}

public static final String DEVELOPMENT_PLATFORM_UNITY = "Unity";

private static final Charset UTF_8 = Charset.forName("UTF-8");

@NonNull
Expand Down Expand Up @@ -416,6 +418,12 @@ public static Builder builder() {
@Nullable
public abstract String getInstallationUuid();

@Nullable
public abstract String getDevelopmentPlatform();

@Nullable
public abstract String getDevelopmentPlatformVersion();

@NonNull
protected abstract Builder toBuilder();

Expand Down Expand Up @@ -446,6 +454,13 @@ public abstract static class Builder {
@NonNull
public abstract Builder setInstallationUuid(@NonNull String installationUuid);

@NonNull
public abstract Builder setDevelopmentPlatform(@Nullable String developmentPlatform);

@NonNull
public abstract Builder setDevelopmentPlatformVersion(
@Nullable String developmentPlatformVersion);

@NonNull
public abstract Application build();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

import android.app.ActivityManager;
import com.google.firebase.crashlytics.internal.Logger;
import com.google.firebase.crashlytics.internal.model.CrashlyticsReport;
import com.google.firebase.crashlytics.internal.stacktrace.TrimmedThrowableData;
import java.util.List;
import java.util.Map;
Expand All @@ -30,7 +31,8 @@ public class SessionProtobufHelper {
private static final ByteString SIGNAL_DEFAULT_BYTE_STRING =
ByteString.copyFromUtf8(SIGNAL_DEFAULT);

private static final ByteString UNITY_PLATFORM_BYTE_STRING = ByteString.copyFromUtf8("Unity");
private static final ByteString UNITY_PLATFORM_BYTE_STRING =
ByteString.copyFromUtf8(CrashlyticsReport.DEVELOPMENT_PLATFORM_UNITY);

private SessionProtobufHelper() {}

Expand Down