From 4cc315952db557c565872de9e8484805f2e42305 Mon Sep 17 00:00:00 2001 From: xehpuk Date: Thu, 8 Jan 2026 01:08:52 +0100 Subject: [PATCH] feat: Add `Disable Sentry telemetry` patch (#6416) --- patches/api/patches.api | 4 +++ .../misc/privacy/DisableSentryTelemetry.kt | 36 +++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 patches/src/main/kotlin/app/revanced/patches/shared/misc/privacy/DisableSentryTelemetry.kt diff --git a/patches/api/patches.api b/patches/api/patches.api index ec75df2b3..86d8f980b 100644 --- a/patches/api/patches.api +++ b/patches/api/patches.api @@ -944,6 +944,10 @@ public final class app/revanced/patches/shared/misc/pairip/license/DisableLicens public static final fun getDisableLicenseCheckPatch ()Lapp/revanced/patcher/patch/BytecodePatch; } +public final class app/revanced/patches/shared/misc/privacy/DisableSentryTelemetryKt { + public static final fun getDisableSentryTelemetryPatch ()Lapp/revanced/patcher/patch/ResourcePatch; +} + public final class app/revanced/patches/shared/misc/settings/SettingsPatchKt { public static final fun overrideThemeColors (Ljava/lang/String;Ljava/lang/String;)V public static final fun settingsPatch (Ljava/util/List;Ljava/util/Set;)Lapp/revanced/patcher/patch/ResourcePatch; diff --git a/patches/src/main/kotlin/app/revanced/patches/shared/misc/privacy/DisableSentryTelemetry.kt b/patches/src/main/kotlin/app/revanced/patches/shared/misc/privacy/DisableSentryTelemetry.kt new file mode 100644 index 000000000..f361a26bb --- /dev/null +++ b/patches/src/main/kotlin/app/revanced/patches/shared/misc/privacy/DisableSentryTelemetry.kt @@ -0,0 +1,36 @@ +package app.revanced.patches.shared.misc.privacy + +import app.revanced.patcher.patch.resourcePatch +import app.revanced.util.asSequence +import app.revanced.util.getNode +import org.w3c.dom.Element + +@Suppress("unused") +val disableSentryTelemetryPatch = resourcePatch( + name = "Disable Sentry telemetry", + description = "Disables Sentry telemetry. See https://sentry.io/for/android/ for more information.", + use = false, +) { + execute { + fun Element.replaceOrCreate(tagName: String, attributeName: String, attributeValue: String) { + val childElements = getElementsByTagName(tagName).asSequence().filterIsInstance() + val targetChild = childElements.find { childElement -> + childElement.getAttribute("android:name") == attributeName + } + if (targetChild != null) { + targetChild.setAttribute("android:value", attributeValue) + } else { + appendChild(ownerDocument.createElement(tagName).apply { + setAttribute("android:name", attributeName) + setAttribute("android:value", attributeValue) + }) + } + } + + document("AndroidManifest.xml").use { document -> + val application = document.getNode("application") as Element + application.replaceOrCreate("meta-data", "io.sentry.enabled", "false") + application.replaceOrCreate("meta-data", "io.sentry.dsn", "") + } + } +}