From f02712ce5ccc2d9052df5078d72fb28549bde294 Mon Sep 17 00:00:00 2001 From: LoveSy Date: Fri, 28 Jan 2022 14:47:07 +0800 Subject: [PATCH] Fix telemetry version for debug build (#1566) --- app/build.gradle.kts | 7 --- .../org/lsposed/manager/util/Telemetry.java | 53 ++++++++++++++----- core/build.gradle.kts | 11 ++-- 3 files changed, 46 insertions(+), 25 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 04c7a66b..d8436a69 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -113,13 +113,6 @@ android { } } } - sourceSets { - named("release") { - java { - srcDirs("src/release/java") - } - } - } } val optimizeReleaseRes = task("optimizeReleaseRes").doLast { diff --git a/app/src/debug/java/org/lsposed/manager/util/Telemetry.java b/app/src/debug/java/org/lsposed/manager/util/Telemetry.java index bf6057de..40c9427b 100644 --- a/app/src/debug/java/org/lsposed/manager/util/Telemetry.java +++ b/app/src/debug/java/org/lsposed/manager/util/Telemetry.java @@ -1,28 +1,53 @@ package org.lsposed.manager.util; import android.app.Application; +import android.os.Handler; +import android.util.Log; + +import androidx.annotation.NonNull; import com.microsoft.appcenter.AppCenter; -import com.microsoft.appcenter.crashes.AbstractCrashesListener; +import com.microsoft.appcenter.channel.AbstractChannelListener; +import com.microsoft.appcenter.channel.Channel; import com.microsoft.appcenter.crashes.Crashes; -import com.microsoft.appcenter.crashes.model.ErrorReport; +import org.lsposed.manager.App; import org.lsposed.manager.BuildConfig; -import java.util.Locale; - public class Telemetry { + static Channel.Listener patchDeviceListener = new AbstractChannelListener() { + @Override + public void onPreparedLog(@NonNull com.microsoft.appcenter.ingestion.models.Log log, @NonNull String groupName, int flags) { + var d = log.getDevice(); + d.setAppVersion(BuildConfig.VERSION_NAME); + d.setAppBuild(String.valueOf(BuildConfig.VERSION_CODE)); + d.setAppNamespace(BuildConfig.APPLICATION_ID); + log.setDevice(d); + } + }; + + static void addPatchDeviceListener() { + try { + var channel = AppCenter.class.getDeclaredField("mChannel"); + channel.setAccessible(true); + ((Channel) channel.get(AppCenter.getInstance())).addListener(patchDeviceListener); + } catch (Throwable e) { + Log.e(App.TAG, "add listener", e); + } + } + + static void patchDevice() throws Throwable { + var handle = AppCenter.class.getDeclaredField("mHandler"); + handle.setAccessible(true); + ((Handler) handle.get(AppCenter.getInstance())).post(Telemetry::addPatchDeviceListener); + } + public static void start(Application app) { - Crashes.setListener(new AbstractCrashesListener() { - @Override - public void onBeforeSending(ErrorReport report) { - var d = report.getDevice(); - d.setAppVersion(BuildConfig.VERSION_NAME); - 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); + try { + patchDevice(); + } catch (Throwable e) { + Log.w(App.TAG, "patch device", e); + } } } diff --git a/core/build.gradle.kts b/core/build.gradle.kts index 6c1b3f10..267100f2 100644 --- a/core/build.gradle.kts +++ b/core/build.gradle.kts @@ -174,6 +174,9 @@ val zipAll = task("zipAll") { } +val apkDir: String + get() = if (rootProject.extra.properties["android.injected.invoked.from.ide"] == "true") "intermediates" else "outputs" + fun afterEval() = android.applicationVariants.forEach { variant -> val variantCapped = variant.name.capitalize(Locale.ROOT) val variantLowered = variant.name.toLowerCase(Locale.ROOT) @@ -235,11 +238,11 @@ fun afterEval() = android.applicationVariants.forEach { variant -> filter("eol" to FixCrLfFilter.CrLf.newInstance("lf")) } } - from("${project(":app").buildDir}/outputs/apk/${buildTypeLowered}") { + from("${project(":app").buildDir}/$apkDir/apk/${buildTypeLowered}") { include("*.apk") rename(".*\\.apk", "manager.apk") } - from("${project(":daemon").buildDir}/outputs/apk/${buildTypeLowered}") { + from("${project(":daemon").buildDir}/$apkDir/apk/${buildTypeLowered}") { include("*.apk") rename(".*\\.apk", "daemon.apk") } @@ -305,7 +308,7 @@ val killLspd = task("killLspd") { } val pushDaemon = task("pushDaemon") { dependsOn(":daemon:assembleDebug") - workingDir("${project(":daemon").buildDir}/outputs/apk/debug") + workingDir("${project(":daemon").buildDir}/$apkDir/apk/debug") commandLine(adb, "push", "daemon-debug.apk", "/data/local/tmp/daemon.apk") } val pushDaemonNative = task("pushDaemonNative") { @@ -330,7 +333,7 @@ val reRunDaemon = task("reRunDaemon") { val tmpApk = "/data/local/tmp/lsp.apk" val pushApk = task("pushApk") { dependsOn(":app:assembleDebug") - workingDir("${project(":app").buildDir}/outputs/apk/debug") + workingDir("${project(":app").buildDir}/$apkDir/apk/debug") commandLine(adb, "push", "app-debug.apk", tmpApk) } val openApp = task("openApp") {