diff --git a/app/build.gradle b/app/build.gradle index 51d87159..dfc691c7 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -12,7 +12,7 @@ buildscript { } plugins { - id "io.sentry.android.gradle" version "3.14.0" + id "io.sentry.android.gradle" version "4.3.0" } apply plugin: 'com.android.application' @@ -121,6 +121,12 @@ sentry { debug = true includeSourceContext = true additionalSourceDirsForSourceContext = ["src/main/java"] + + autoInstallation { + enabled = true + sentryVersion = "7.5.0" + } + tracingInstrumentation { enabled = true logcat { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 5c11079f..599a2adb 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -87,6 +87,11 @@ android:value="true" /> + + diff --git a/app/src/main/java/com/example/vu/android/MyApplication.java b/app/src/main/java/com/example/vu/android/MyApplication.java index 8c69d34b..3a932e1a 100644 --- a/app/src/main/java/com/example/vu/android/MyApplication.java +++ b/app/src/main/java/com/example/vu/android/MyApplication.java @@ -70,6 +70,8 @@ public void onCreate() { ); options.setAttachThreads(true); + options.setEnableAppStartProfiling(true); + options.setEnablePerformanceV2(true); options.setBeforeSend((event, hint) -> { //Remove PII diff --git a/app/src/main/java/com/example/vu/android/ThirdPartyContentProvider.java b/app/src/main/java/com/example/vu/android/ThirdPartyContentProvider.java new file mode 100644 index 00000000..f8618ade --- /dev/null +++ b/app/src/main/java/com/example/vu/android/ThirdPartyContentProvider.java @@ -0,0 +1,69 @@ +package com.example.vu.android; + +import android.content.ContentProvider; +import android.content.ContentValues; +import android.database.Cursor; +import android.net.Uri; +import android.os.Build; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import java.io.File; +import java.io.FileWriter; +import java.util.Scanner; +import java.util.UUID; + +public class ThirdPartyContentProvider extends ContentProvider { + + /** @noinspection FieldCanBeLocal*/ + private static String installationIdentifier; + + @Override + public boolean onCreate() { + final int runs = BuildConfig.VERSION_CODE >= 44 ? 100000 : 100; + try { + final File installationFile = new File(getContext().getFilesDir(), "INSTALLATION-ID"); + final StringBuilder identifier = new StringBuilder(); + for (int i = 0; i < runs; i++) { + identifier.append(UUID.randomUUID().toString()); + } + installationIdentifier = identifier.toString(); + // write installationID to file + try (final FileWriter fw = new FileWriter(installationFile)) { + fw.write(installationIdentifier); + } + } catch (Exception e) { + // ignored + } + return true; + } + + @Nullable + @Override + public Cursor query(@NonNull Uri uri, @Nullable String[] projection, @Nullable String selection, @Nullable String[] selectionArgs, @Nullable String sortOrder) { + return null; + } + + @Nullable + @Override + public String getType(@NonNull Uri uri) { + return null; + } + + @Nullable + @Override + public Uri insert(@NonNull Uri uri, @Nullable ContentValues values) { + return null; + } + + @Override + public int delete(@NonNull Uri uri, @Nullable String selection, @Nullable String[] selectionArgs) { + return 0; + } + + @Override + public int update(@NonNull Uri uri, @Nullable ContentValues values, @Nullable String selection, @Nullable String[] selectionArgs) { + return 0; + } +}