From 7737d2aaa50adb4b17d138e93ae22fdf50d8daa1 Mon Sep 17 00:00:00 2001 From: rushiiMachine <33725716+rushiiMachine@users.noreply.github.com> Date: Sat, 25 Jan 2025 00:32:51 -0800 Subject: [PATCH] fix(Patching): multi-install detection Add attributes to patched manifests for identifying Aliucord installations. --- .../aliucord/manager/patcher/util/ManifestPatcher.kt | 10 ++++++++++ .../com/aliucord/manager/ui/screens/home/HomeModel.kt | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/app/src/main/kotlin/com/aliucord/manager/patcher/util/ManifestPatcher.kt b/app/src/main/kotlin/com/aliucord/manager/patcher/util/ManifestPatcher.kt index f48e971..800325e 100644 --- a/app/src/main/kotlin/com/aliucord/manager/patcher/util/ManifestPatcher.kt +++ b/app/src/main/kotlin/com/aliucord/manager/patcher/util/ManifestPatcher.kt @@ -101,6 +101,7 @@ object ManifestPatcher { private var addLegacyStorage = true private var addUseEmbeddedDex = true private var addExtractNativeLibs = true + private var addMetadata = true override fun attr(ns: String?, name: String, resourceId: Int, type: Int, value: Any?) { if (name == NETWORK_SECURITY_CONFIG) return @@ -114,6 +115,15 @@ object ManifestPatcher { override fun child(ns: String?, name: String): NodeVisitor { val visitor = super.child(ns, name) + // Adds a tag to make multi-install detection by HomeScreen work + if (addMetadata) { + addMetadata = false + super.child(ANDROID_NAMESPACE, "meta-data").apply { + attr(ANDROID_NAMESPACE, "name", android.R.attr.name, TYPE_STRING, "isAliucord") + attr(ANDROID_NAMESPACE, "value", android.R.attr.value, TYPE_INT_BOOLEAN, 1) + } + } + return when (name) { "activity" -> ReplaceAttrsVisitor(visitor, mapOf("label" to appName)) "provider" -> object : NodeVisitor(visitor) { diff --git a/app/src/main/kotlin/com/aliucord/manager/ui/screens/home/HomeModel.kt b/app/src/main/kotlin/com/aliucord/manager/ui/screens/home/HomeModel.kt index d55ee64..4d5d268 100644 --- a/app/src/main/kotlin/com/aliucord/manager/ui/screens/home/HomeModel.kt +++ b/app/src/main/kotlin/com/aliucord/manager/ui/screens/home/HomeModel.kt @@ -103,7 +103,7 @@ class HomeModel( val aliucordPackages = installedPackages .asSequence() .filter { - val isAliucordPkg = it.packageName == "com.aliucord" + val isAliucordPkg = it.packageName == "com.aliucord" // Legacy installer builds do not have isAliucord metadata marker val hasAliucordMeta = it.applicationInfo?.metaData?.containsKey("isAliucord") == true isAliucordPkg || hasAliucordMeta }