From df864ade957f3e0dcb17a2a1d82dce8a38c1780d Mon Sep 17 00:00:00 2001 From: Zane Schepke Date: Mon, 3 Nov 2025 02:24:19 -0500 Subject: [PATCH] fix: binder leak --- app/build.gradle.kts | 2 ++ .../wireguardautotunnel/core/service/LocalBinder.kt | 8 +++++++- gradle/libs.versions.toml | 2 ++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 6ce3ec1b..ce20e50a 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -242,6 +242,8 @@ dependencies { debugImplementation(libs.androidx.compose.ui.tooling) debugImplementation(libs.androidx.compose.manifest) + debugImplementation(libs.leakcanary.android) + // Room database backup implementation(libs.roomdatabasebackup) { exclude(group = "org.reactivestreams", module = "reactive-streams") diff --git a/app/src/main/java/com/zaneschepke/wireguardautotunnel/core/service/LocalBinder.kt b/app/src/main/java/com/zaneschepke/wireguardautotunnel/core/service/LocalBinder.kt index 01a5b9dd..e1c005a9 100644 --- a/app/src/main/java/com/zaneschepke/wireguardautotunnel/core/service/LocalBinder.kt +++ b/app/src/main/java/com/zaneschepke/wireguardautotunnel/core/service/LocalBinder.kt @@ -1,5 +1,11 @@ package com.zaneschepke.wireguardautotunnel.core.service import android.os.Binder +import java.lang.ref.WeakReference -class LocalBinder(val service: TunnelService) : Binder() +class LocalBinder(service: TunnelService) : Binder() { + private val serviceRef = WeakReference(service) + + val service: TunnelService? + get() = serviceRef.get() +} diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 568966d7..f4809136 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -5,6 +5,7 @@ amneziawgAndroid = "2.2.0" androidx-junit = "1.3.0" icmp4a = "1.0.0" ipaddress = "5.5.1" +leakcanaryAndroid = "3.0-alpha-8" orbitCompose = "10.0.0" roomdatabasebackup = "1.1.0" shizuku = "13.1.5" @@ -130,6 +131,7 @@ androidx-compose-ui = { module = "androidx.compose.ui:ui", version.ref = "compos androidx-compose-animation-graphics = { module = "androidx.compose.animation:animation-graphics", version.ref = "compose" } icmp4a = { module = "com.marsounjan:icmp4a", version.ref = "icmp4a" } ipaddress = { module = "com.github.seancfoley:ipaddress", version.ref = "ipaddress" } +leakcanary-android = { module = "com.squareup.leakcanary:leakcanary-android", version.ref = "leakcanaryAndroid" } material = { group = "com.google.android.material", name = "material", version.ref = "material" } androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "activityCompose" } androidx-appcompat = { module = "androidx.appcompat:appcompat", version.ref = "appcompat" }