fix(Patching): multi-install detection

Add attributes to patched manifests for identifying Aliucord installations.
This commit is contained in:
rushiiMachine 2025-01-25 00:32:51 -08:00
parent ae9a9c7bad
commit 7737d2aaa5
No known key found for this signature in database
GPG key ID: DCBE5952BB3B6420
2 changed files with 11 additions and 1 deletions

View file

@ -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 <meta-data> 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) {

View file

@ -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
}