Skip to content

Commit 3e13fb5

Browse files
committed
fix: Check, if mounting is possible
1 parent db50cee commit 3e13fb5

File tree

4 files changed

+24
-4
lines changed

4 files changed

+24
-4
lines changed

revanced-lib/api/revanced-lib.api

+6
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,12 @@ public final class app/revanced/lib/adb/AdbManager$Companion {
4747
public final class app/revanced/lib/adb/AdbManager$DeviceNotFoundException : java/lang/Exception {
4848
}
4949

50+
public final class app/revanced/lib/adb/AdbManager$FailedToFindInstalledPackageException : java/lang/Exception {
51+
}
52+
53+
public final class app/revanced/lib/adb/AdbManager$PackageNameRequiredException : java/lang/Exception {
54+
}
55+
5056
public final class app/revanced/lib/adb/AdbManager$RootAdbManager : app/revanced/lib/adb/AdbManager {
5157
public static final field Utils Lapp/revanced/lib/adb/AdbManager$RootAdbManager$Utils;
5258
public fun install (Lapp/revanced/lib/adb/AdbManager$Apk;)V

revanced-lib/src/main/kotlin/app/revanced/lib/adb/AdbManager.kt

+13-1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import app.revanced.lib.adb.Constants.MOUNT_PATH
1010
import app.revanced.lib.adb.Constants.MOUNT_SCRIPT
1111
import app.revanced.lib.adb.Constants.PATCHED_APK_PATH
1212
import app.revanced.lib.adb.Constants.PLACEHOLDER
13+
import app.revanced.lib.adb.Constants.RESOLVE_ACTIVITY
1314
import app.revanced.lib.adb.Constants.RESTART
1415
import app.revanced.lib.adb.Constants.TMP_PATH
1516
import app.revanced.lib.adb.Constants.UMOUNT
@@ -74,9 +75,14 @@ sealed class AdbManager private constructor(deviceSerial: String? = null) {
7475
logger.info("Installing by mounting")
7576

7677
val applyReplacement = getPlaceholderReplacement(
77-
apk.packageName ?: throw IllegalArgumentException("Package name is required")
78+
apk.packageName ?: throw PackageNameRequiredException()
7879
)
7980

81+
device.run(RESOLVE_ACTIVITY.applyReplacement()).inputStream.bufferedReader().readLine().let { line ->
82+
if (line != "No activity found") return@let
83+
throw throw FailedToFindInstalledPackageException(apk.packageName)
84+
}
85+
8086
device.push(apk.file, TMP_PATH)
8187

8288
device.run("$CREATE_DIR $INSTALLATION_PATH")
@@ -142,4 +148,10 @@ sealed class AdbManager private constructor(deviceSerial: String? = null) {
142148
Exception(deviceSerial?.let {
143149
"The device with the ADB device serial \"$deviceSerial\" can not be found"
144150
} ?: "No ADB device found")
151+
152+
class FailedToFindInstalledPackageException internal constructor(packageName: String) :
153+
Exception("Failed to find installed package \"$packageName\" because no activity was found")
154+
155+
class PackageNameRequiredException internal constructor() :
156+
Exception("Package name is required")
145157
}

revanced-lib/src/main/kotlin/app/revanced/lib/adb/Commands.kt

+3-2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package app.revanced.lib.adb
22

33
import se.vidstige.jadb.JadbDevice
44
import se.vidstige.jadb.RemoteFile
5+
import se.vidstige.jadb.ShellProcess
56
import se.vidstige.jadb.ShellProcessBuilder
67
import java.io.File
78

@@ -15,8 +16,8 @@ internal fun JadbDevice.buildCommand(command: String, su: Boolean = true): Shell
1516
return shellProcessBuilder(cmd, *args.toTypedArray())
1617
}
1718

18-
internal fun JadbDevice.run(command: String, su: Boolean = true): Int {
19-
return this.buildCommand(command, su).start().waitFor()
19+
internal fun JadbDevice.run(command: String, su: Boolean = true): ShellProcess {
20+
return this.buildCommand(command, su).start()!!
2021
}
2122

2223
internal fun JadbDevice.hasSu() =

revanced-lib/src/main/kotlin/app/revanced/lib/adb/Constants.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ internal object Constants {
1010

1111
internal const val DELETE = "rm -rf $PLACEHOLDER"
1212
internal const val CREATE_DIR = "mkdir -p"
13-
internal const val RESTART = "pm resolve-activity --brief $PLACEHOLDER | tail -n 1 | " +
13+
internal const val RESOLVE_ACTIVITY = "pm resolve-activity --brief $PLACEHOLDER"
14+
internal const val RESTART = "$RESOLVE_ACTIVITY | tail -n 1 | " +
1415
"xargs am start -n && kill ${'$'}(pidof -s $PLACEHOLDER)"
1516

1617
internal const val INSTALL_PATCHED_APK = "base_path=\"$PATCHED_APK_PATH\" && " +

0 commit comments

Comments
 (0)