From 254f36d03cc8fd3e2508a5e8f69bb5c8e1eb9775 Mon Sep 17 00:00:00 2001 From: laur89 Date: Fri, 2 May 2025 15:04:34 +0200 Subject: [PATCH 1/4] fix: Interpret package name as a string instead of Regex when using grep (#68) --- .../revanced/library/installation/installer/Constants.kt | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/commonMain/kotlin/app/revanced/library/installation/installer/Constants.kt b/src/commonMain/kotlin/app/revanced/library/installation/installer/Constants.kt index 24d9da1..2b24947 100644 --- a/src/commonMain/kotlin/app/revanced/library/installation/installer/Constants.kt +++ b/src/commonMain/kotlin/app/revanced/library/installation/installer/Constants.kt @@ -4,13 +4,14 @@ package app.revanced.library.installation.installer internal object Constants { const val PLACEHOLDER = "PLACEHOLDER" + const val SELINUX_CONTEXT = "u:object_r:apk_data_file:s0" const val TMP_FILE_PATH = "/data/local/tmp/revanced.tmp" const val MOUNT_PATH = "/data/adb/revanced/" const val MOUNTED_APK_PATH = "$MOUNT_PATH$PLACEHOLDER.apk" const val MOUNT_SCRIPT_PATH = "/data/adb/service.d/mount_revanced_$PLACEHOLDER.sh" const val EXISTS = "[[ -f $PLACEHOLDER ]] || exit 1" - const val MOUNT_GREP = "grep $PLACEHOLDER /proc/mounts" + const val MOUNT_GREP = "grep -F $PLACEHOLDER /proc/mounts" const val DELETE = "rm -rf $PLACEHOLDER" const val CREATE_DIR = "mkdir -p" const val RESTART = "am start -S $PLACEHOLDER" @@ -23,7 +24,7 @@ internal object Constants { "mv $TMP_FILE_PATH \$base_path && " + "chmod 644 \$base_path && " + "chown system:system \$base_path && " + - "chcon u:object_r:apk_data_file:s0 \$base_path" + "chcon $SELINUX_CONTEXT \$base_path" const val UMOUNT = "grep $PLACEHOLDER /proc/mounts | " + @@ -52,7 +53,7 @@ internal object Constants { base_path="$MOUNTED_APK_PATH" - chcon u:object_r:apk_data_file:s0 ${'$'}base_path + chcon $SELINUX_CONTEXT ${'$'}base_path # Use Magisk mirror, if possible. if command -v magisk &> /dev/null; then From 9d060c188fcfe456b4201b5d3c51ad6c4890f539 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Fri, 2 May 2025 13:07:51 +0000 Subject: [PATCH 2/4] chore: Release v3.1.1-dev.1 [skip ci] ## [3.1.1-dev.1](https://github.com/ReVanced/revanced-library/compare/v3.1.0...v3.1.1-dev.1) (2025-05-02) ### Bug Fixes * Interpret package name as a string instead of Regex when using grep ([#68](https://github.com/ReVanced/revanced-library/issues/68)) ([254f36d](https://github.com/ReVanced/revanced-library/commit/254f36d03cc8fd3e2508a5e8f69bb5c8e1eb9775)) --- CHANGELOG.md | 7 +++++++ gradle.properties | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e77133a..dc7d931 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [3.1.1-dev.1](https://github.com/ReVanced/revanced-library/compare/v3.1.0...v3.1.1-dev.1) (2025-05-02) + + +### Bug Fixes + +* Interpret package name as a string instead of Regex when using grep ([#68](https://github.com/ReVanced/revanced-library/issues/68)) ([254f36d](https://github.com/ReVanced/revanced-library/commit/254f36d03cc8fd3e2508a5e8f69bb5c8e1eb9775)) + # [3.1.0](https://github.com/ReVanced/revanced-library/compare/v3.0.2...v3.1.0) (2024-11-27) diff --git a/gradle.properties b/gradle.properties index db8a3bc..b91c9ad 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -version = 3.1.0 +version = 3.1.1-dev.1 #Gradle org.gradle.jvmargs = -Xmx2048M -Dfile.encoding=UTF-8 -Dkotlin.daemon.jvm.options="-Xmx2048M" org.gradle.caching = true From be0f6bf247461d16fbf649a9f2dc6facbb5b0c93 Mon Sep 17 00:00:00 2001 From: Brosssh <44944126+Brosssh@users.noreply.github.com> Date: Tue, 27 May 2025 15:31:09 +0200 Subject: [PATCH 3/4] feat: Request the update ownership enforcement (#71) Co-authored-by: oSumAtrIX --- gradle/libs.versions.toml | 2 +- .../installation/installer/LocalInstaller.kt | 4 ++++ .../installation/installer/AdbInstaller.kt | 23 ++++++++++++------- .../installation/installer/Constants.kt | 3 ++- 4 files changed, 22 insertions(+), 10 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 6988866..d1cde0c 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -4,7 +4,7 @@ bcpkix-jdk18on = "1.77" binary-compatibility-validator = "0.15.1" core-ktx = "1.15.0" guava = "33.2.1-jre" -jadb = "1.2.1" +jadb = "1.2.1.1" kotlin = "2.0.20" kotlinx-coroutines = "1.8.1" kotlinx-serialization = "1.7.1" diff --git a/src/androidMain/kotlin/app/revanced/library/installation/installer/LocalInstaller.kt b/src/androidMain/kotlin/app/revanced/library/installation/installer/LocalInstaller.kt index cb3bf48..e5e0485 100644 --- a/src/androidMain/kotlin/app/revanced/library/installation/installer/LocalInstaller.kt +++ b/src/androidMain/kotlin/app/revanced/library/installation/installer/LocalInstaller.kt @@ -8,6 +8,7 @@ import android.content.Intent import android.content.IntentFilter import android.content.pm.PackageInstaller import android.content.pm.PackageManager +import android.os.Build import androidx.core.content.ContextCompat import app.revanced.library.installation.installer.Installer.Apk import java.io.Closeable @@ -85,10 +86,13 @@ class LocalInstaller( override fun close() = context.unregisterReceiver(broadcastReceiver) + @SuppressLint("MissingPermission") companion object { private val sessionParams = PackageInstaller.SessionParams( PackageInstaller.SessionParams.MODE_FULL_INSTALL, ).apply { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) + setRequestUpdateOwnership(true) setInstallReason(PackageManager.INSTALL_REASON_USER) } diff --git a/src/commonMain/kotlin/app/revanced/library/installation/installer/AdbInstaller.kt b/src/commonMain/kotlin/app/revanced/library/installation/installer/AdbInstaller.kt index c8e389c..f781f04 100644 --- a/src/commonMain/kotlin/app/revanced/library/installation/installer/AdbInstaller.kt +++ b/src/commonMain/kotlin/app/revanced/library/installation/installer/AdbInstaller.kt @@ -1,11 +1,13 @@ package app.revanced.library.installation.installer import app.revanced.library.installation.command.AdbShellCommandRunner +import app.revanced.library.installation.command.ShellCommandRunner +import app.revanced.library.installation.installer.Constants.GET_SDK_VERSION import app.revanced.library.installation.installer.Constants.INSTALLED_APK_PATH -import app.revanced.library.installation.installer.Installer.Apk import se.vidstige.jadb.JadbException import se.vidstige.jadb.managers.Package import se.vidstige.jadb.managers.PackageManager +import se.vidstige.jadb.managers.PackageManager.UPDATE_OWNERSHIP /** * [AdbInstaller] for installing and uninstalling [Apk] files using ADB. @@ -17,18 +19,23 @@ import se.vidstige.jadb.managers.PackageManager class AdbInstaller( deviceSerial: String? = null, ) : Installer() { - private val device = getDevice(deviceSerial, logger) - private val adbShellCommandRunner = AdbShellCommandRunner(device) - private val packageManager = PackageManager(device) + private val shellCommandRunner: ShellCommandRunner + private val packageManager: PackageManager init { + val device = getDevice(deviceSerial, logger) + shellCommandRunner = AdbShellCommandRunner(device) + packageManager = PackageManager(device) + logger.fine("Connected to $deviceSerial") } override suspend fun install(apk: Apk): AdbInstallerResult { - logger.info("Installing ${apk.file.name}") - - return runPackageManager { install(apk.file) } + return runPackageManager { + val sdkVersion = shellCommandRunner(GET_SDK_VERSION).output.toInt() + if (sdkVersion < 34) install(apk.file) + else installWithOptions(apk.file, listOf(UPDATE_OWNERSHIP)) + } } override suspend fun uninstall(packageName: String): AdbInstallerResult { @@ -39,7 +46,7 @@ class AdbInstaller( override suspend fun getInstallation(packageName: String): Installation? = packageManager.packages.find { it.toString() == packageName - }?.let { Installation(adbShellCommandRunner(INSTALLED_APK_PATH).output) } + }?.let { Installation(shellCommandRunner(INSTALLED_APK_PATH).output) } private fun runPackageManager(block: PackageManager.() -> Unit) = try { packageManager.run(block) diff --git a/src/commonMain/kotlin/app/revanced/library/installation/installer/Constants.kt b/src/commonMain/kotlin/app/revanced/library/installation/installer/Constants.kt index 2b24947..2f18f32 100644 --- a/src/commonMain/kotlin/app/revanced/library/installation/installer/Constants.kt +++ b/src/commonMain/kotlin/app/revanced/library/installation/installer/Constants.kt @@ -18,7 +18,8 @@ internal object Constants { const val KILL = "am force-stop $PLACEHOLDER" const val INSTALLED_APK_PATH = "pm path $PLACEHOLDER" const val CREATE_INSTALLATION_PATH = "$CREATE_DIR $MOUNT_PATH" - + const val GET_SDK_VERSION = "getprop ro.build.version.sdk" + const val MOUNT_APK = "base_path=\"$MOUNTED_APK_PATH\" && " + "mv $TMP_FILE_PATH \$base_path && " + From 5df2bb81bf9783573d26274c28e87b58918b7e24 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Tue, 27 May 2025 13:37:00 +0000 Subject: [PATCH 4/4] chore: Release v3.2.0-dev.1 [skip ci] # [3.2.0-dev.1](https://github.com/ReVanced/revanced-library/compare/v3.1.1-dev.1...v3.2.0-dev.1) (2025-05-27) ### Features * Request the update ownership enforcement ([#71](https://github.com/ReVanced/revanced-library/issues/71)) ([be0f6bf](https://github.com/ReVanced/revanced-library/commit/be0f6bf247461d16fbf649a9f2dc6facbb5b0c93)) --- CHANGELOG.md | 7 +++++++ gradle.properties | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index dc7d931..a3dc065 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# [3.2.0-dev.1](https://github.com/ReVanced/revanced-library/compare/v3.1.1-dev.1...v3.2.0-dev.1) (2025-05-27) + + +### Features + +* Request the update ownership enforcement ([#71](https://github.com/ReVanced/revanced-library/issues/71)) ([be0f6bf](https://github.com/ReVanced/revanced-library/commit/be0f6bf247461d16fbf649a9f2dc6facbb5b0c93)) + ## [3.1.1-dev.1](https://github.com/ReVanced/revanced-library/compare/v3.1.0...v3.1.1-dev.1) (2025-05-02) diff --git a/gradle.properties b/gradle.properties index b91c9ad..3a29360 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -version = 3.1.1-dev.1 +version = 3.2.0-dev.1 #Gradle org.gradle.jvmargs = -Xmx2048M -Dfile.encoding=UTF-8 -Dkotlin.daemon.jvm.options="-Xmx2048M" org.gradle.caching = true