From f6e9ad3b91d49645b4d0285c2d0d7d6dbb7a9076 Mon Sep 17 00:00:00 2001 From: LoveSy Date: Thu, 27 Jan 2022 16:03:37 +0800 Subject: [PATCH] Add telemetry for debug build (#1564) --- app/build.gradle.kts | 11 ++++++++ .../org/lsposed/manager/util/Telemetry.java | 28 +++++++++++++++++++ .../main/java/org/lsposed/manager/App.java | 9 ++++++ .../org/lsposed/manager/util/Telemetry.java | 7 +++++ 4 files changed, 55 insertions(+) create mode 100644 app/src/debug/java/org/lsposed/manager/util/Telemetry.java create mode 100644 app/src/release/java/org/lsposed/manager/util/Telemetry.java diff --git a/app/build.gradle.kts b/app/build.gradle.kts index c352758d..ba534f75 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -126,6 +126,13 @@ android { } } } + sourceSets { + named("release") { + java { + srcDirs("src/release/java") + } + } + } } val optimizeReleaseRes = task("optimizeReleaseRes").doLast { @@ -228,6 +235,10 @@ dependencies { implementation("me.zhanghai.android.appiconloader:appiconloader:1.3.1") implementation("org.lsposed.hiddenapibypass:hiddenapibypass:4.2") implementation(project(":manager-service")) + + val appCenter = "4.3.1" + debugImplementation("com.microsoft.appcenter:appcenter-analytics:${appCenter}") + debugImplementation("com.microsoft.appcenter:appcenter-crashes:${appCenter}") } configurations.all { diff --git a/app/src/debug/java/org/lsposed/manager/util/Telemetry.java b/app/src/debug/java/org/lsposed/manager/util/Telemetry.java new file mode 100644 index 00000000..806fcb1a --- /dev/null +++ b/app/src/debug/java/org/lsposed/manager/util/Telemetry.java @@ -0,0 +1,28 @@ +package org.lsposed.manager.util; + +import android.app.Application; + +import com.microsoft.appcenter.AppCenter; +import com.microsoft.appcenter.crashes.AbstractCrashesListener; +import com.microsoft.appcenter.crashes.Crashes; +import com.microsoft.appcenter.crashes.model.ErrorReport; + +import org.lsposed.manager.BuildConfig; + +import java.util.Locale; + +public class Telemetry { + public static void start(Application app) { + Crashes.setListener(new AbstractCrashesListener() { + @Override + public void onBeforeSending(ErrorReport report) { + var d = report.getDevice(); + d.setAppVersion(String.format(Locale.ROOT, "%s (%d)", BuildConfig.VERSION_NAME, BuildConfig.VERSION_CODE)); + d.setAppBuild(String.valueOf(BuildConfig.VERSION_CODE)); + d.setAppNamespace(BuildConfig.APPLICATION_ID); + report.setDevice(d); + } + }); + AppCenter.start(app, "eb3c4175-e879-4312-a72e-b0e64bca142c", Crashes.class); + } +} diff --git a/app/src/main/java/org/lsposed/manager/App.java b/app/src/main/java/org/lsposed/manager/App.java index 1a41b376..c6b071a6 100644 --- a/app/src/main/java/org/lsposed/manager/App.java +++ b/app/src/main/java/org/lsposed/manager/App.java @@ -43,6 +43,7 @@ import org.lsposed.manager.repo.RepoLoader; import org.lsposed.manager.ui.activity.CrashReportActivity; import org.lsposed.manager.util.DoHDNS; import org.lsposed.manager.util.ModuleUtil; +import org.lsposed.manager.util.Telemetry; import org.lsposed.manager.util.ThemeUtil; import org.lsposed.manager.util.UpdateUtil; @@ -143,6 +144,14 @@ public class App extends Application { return !Process.isApplicationUid(Process.myUid()); } + @Override + protected void attachBaseContext(Context base) { + super.attachBaseContext(base); + if (BuildConfig.DEBUG) { + Telemetry.start(this); + } + } + @SuppressLint("WrongConstant") private void setCrashReport() { Thread.setDefaultUncaughtExceptionHandler((thread, throwable) -> { diff --git a/app/src/release/java/org/lsposed/manager/util/Telemetry.java b/app/src/release/java/org/lsposed/manager/util/Telemetry.java new file mode 100644 index 00000000..4d9574db --- /dev/null +++ b/app/src/release/java/org/lsposed/manager/util/Telemetry.java @@ -0,0 +1,7 @@ +package org.lsposed.manager.util; + +import android.app.Application; + +public class Telemetry { + public static void start(Application application) {} +}