Compare commits

..

18 Commits

Author SHA1 Message Date
semantic-release-bot
1717cc66f7 chore: Release v5.0.2-dev.1 [skip ci]
## [5.0.2-dev.1](https://github.com/ReVanced/revanced-cli/compare/v5.0.1...v5.0.2-dev.1) (2025-04-20)

### Bug Fixes

* Group `mount` and `install` options into an argument group  ([#364](https://github.com/ReVanced/revanced-cli/issues/364)) ([0c53a2d](0c53a2d1d7))
2025-04-20 23:20:36 +00:00
laur89
0c53a2d1d7 fix: Group mount and install options into an argument group (#364)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2025-04-21 01:18:41 +02:00
semantic-release-bot
a0189aeaee chore: Release v5.0.1 [skip ci]
## [5.0.1](https://github.com/ReVanced/revanced-cli/compare/v5.0.0...v5.0.1) (2025-04-14)

### Bug Fixes

* Make mounting work again by bumping dependencies ([#359](https://github.com/ReVanced/revanced-cli/issues/359)) ([68a4872](68a48724eb))
2025-04-14 08:53:31 +00:00
oSumAtrIX
19e8422588 chore: Merge branch dev to main (#354)
Co-authored-by: kitadai31 <90122968+kitadai31@users.noreply.github.com>
Co-authored-by: Jamie McCullough <92225779+AoifeMcCull@users.noreply.github.com>
Co-authored-by: semantic-release-bot <semantic-release-bot@martynus.net>
2025-04-14 10:51:31 +02:00
semantic-release-bot
d908595b22 chore: Release v5.0.1-dev.1 [skip ci]
## [5.0.1-dev.1](https://github.com/ReVanced/revanced-cli/compare/v5.0.0...v5.0.1-dev.1) (2025-02-26)

### Bug Fixes

* Make mounting work again by bumping dependencies ([#359](https://github.com/ReVanced/revanced-cli/issues/359)) ([68a4872](68a48724eb))
2025-02-26 21:52:52 +00:00
Jamie McCullough
68a48724eb fix: Make mounting work again by bumping dependencies (#359) 2025-02-26 22:50:58 +01:00
kitadai31
bf31de4148 build: Remove AAPT1 binary & minimize ReVanced Library (#340) 2024-12-24 01:52:44 +01:00
semantic-release-bot
63b6350afc chore: Release v5.0.0 [skip ci]
# [5.0.0](https://github.com/ReVanced/revanced-cli/compare/v4.6.0...v5.0.0) (2024-11-10)

### Bug Fixes

* Check for null when no device serial was specified ([1da8ae9](1da8ae9e46))
* List if patch option is required ([#346](https://github.com/ReVanced/revanced-cli/issues/346)) ([98ff0c3](98ff0c34fa))
* Make CLI ArgGroup non-exclusive to be able to disable and enable patches at the same time ([1bb0d13](1bb0d13726))
* Make patches selectable by using a mutable collection for the selection option ([751fa1d](751fa1d889))
* Make the patch command work without specifying any selection ([ba159a3](ba159a35a9))
* Print in new line correctly ([c2dc9d7](c2dc9d76be))
* Use the first connected device when no ADB device is specified ([5f952f3](5f952f35f5))

### Features

* Set patch options via CLI ([#336](https://github.com/ReVanced/revanced-cli/issues/336)) ([2300243](23002434b2))
* Show error about no installation device found at the beginning ([3300e6b](3300e6b433))
* Simplify command and option names and descriptions ([#338](https://github.com/ReVanced/revanced-cli/issues/338)) ([6e7797a](6e7797a3f0))
* Simplify option descriptions ([45c998b](45c998b335))

### BREAKING CHANGES

* Options have been renamed.
* This commit changes various CLI options and removes the `options.json` file. Instead, patch options can now be passed via CLI options
2024-11-10 14:57:43 +00:00
oSumAtrIX
5d8beae7be chore: Merge branch dev to main (#328) 2024-11-10 15:55:48 +01:00
semantic-release-bot
dbbc00706d chore: Release v5.0.0-dev.11 [skip ci]
# [5.0.0-dev.11](https://github.com/ReVanced/revanced-cli/compare/v5.0.0-dev.10...v5.0.0-dev.11) (2024-11-10)

### Bug Fixes

* List if patch option is required ([#346](https://github.com/ReVanced/revanced-cli/issues/346)) ([98ff0c3](98ff0c34fa))
2024-11-10 14:49:46 +00:00
decipher
98ff0c34fa fix: List if patch option is required (#346) 2024-11-10 15:47:55 +01:00
semantic-release-bot
77be717de0 chore: Release v5.0.0-dev.10 [skip ci]
# [5.0.0-dev.10](https://github.com/ReVanced/revanced-cli/compare/v5.0.0-dev.9...v5.0.0-dev.10) (2024-11-05)

### Bug Fixes

* Make CLI ArgGroup non-exclusive to be able to disable and enable patches at the same time ([1bb0d13](1bb0d13726))
2024-11-05 19:01:23 +00:00
oSumAtrIX
1bb0d13726 fix: Make CLI ArgGroup non-exclusive to be able to disable and enable patches at the same time 2024-11-05 19:59:09 +01:00
oSumAtrIX
18e56e6ff4 build(Needs bump): Bump dependencies 2024-11-05 19:58:21 +01:00
semantic-release-bot
94b9e2bc6c chore: Release v5.0.0-dev.9 [skip ci]
# [5.0.0-dev.9](https://github.com/ReVanced/revanced-cli/compare/v5.0.0-dev.8...v5.0.0-dev.9) (2024-11-05)

### Bug Fixes

* Print in new line correctly ([c2dc9d7](c2dc9d76be))
2024-11-05 15:55:05 +00:00
oSumAtrIX
c2dc9d76be fix: Print in new line correctly 2024-11-05 16:53:03 +01:00
oSumAtrIX
3d0c8c1526 chore: Remove unused variable 2024-10-27 05:13:31 +01:00
oSumAtrIX
b54308b0e2 docs: Fix spelling mistakes [skip ci] 2024-10-23 21:08:49 +02:00
26 changed files with 109 additions and 318 deletions

5
.gitignore vendored
View File

@@ -122,7 +122,4 @@ revanced-cache/
options.toml
# Generated by Android projects
local.properties
# Generated by scripts
scripts/workspace
local.properties

View File

@@ -1,3 +1,72 @@
## [5.0.2-dev.1](https://github.com/ReVanced/revanced-cli/compare/v5.0.1...v5.0.2-dev.1) (2025-04-20)
### Bug Fixes
* Group `mount` and `install` options into an argument group ([#364](https://github.com/ReVanced/revanced-cli/issues/364)) ([0c53a2d](https://github.com/ReVanced/revanced-cli/commit/0c53a2d1d75d3d934d134594751fe6cd0b000d1a))
## [5.0.1](https://github.com/ReVanced/revanced-cli/compare/v5.0.0...v5.0.1) (2025-04-14)
### Bug Fixes
* Make mounting work again by bumping dependencies ([#359](https://github.com/ReVanced/revanced-cli/issues/359)) ([68a4872](https://github.com/ReVanced/revanced-cli/commit/68a48724ebf01a0c8f8adc0fec63037bff672dc9))
## [5.0.1-dev.1](https://github.com/ReVanced/revanced-cli/compare/v5.0.0...v5.0.1-dev.1) (2025-02-26)
### Bug Fixes
* Make mounting work again by bumping dependencies ([#359](https://github.com/ReVanced/revanced-cli/issues/359)) ([68a4872](https://github.com/ReVanced/revanced-cli/commit/68a48724ebf01a0c8f8adc0fec63037bff672dc9))
# [5.0.0](https://github.com/ReVanced/revanced-cli/compare/v4.6.0...v5.0.0) (2024-11-10)
### Bug Fixes
* Check for null when no device serial was specified ([1da8ae9](https://github.com/ReVanced/revanced-cli/commit/1da8ae9e46000dd3c4eecd793c559e75012cf535))
* List if patch option is required ([#346](https://github.com/ReVanced/revanced-cli/issues/346)) ([98ff0c3](https://github.com/ReVanced/revanced-cli/commit/98ff0c34fa71c3b3ecd96157d45a30ee2b8979c6))
* Make CLI ArgGroup non-exclusive to be able to disable and enable patches at the same time ([1bb0d13](https://github.com/ReVanced/revanced-cli/commit/1bb0d13726fd5790c59cb6d28df3618c7606710d))
* Make patches selectable by using a mutable collection for the selection option ([751fa1d](https://github.com/ReVanced/revanced-cli/commit/751fa1d889f40c51b291116029fd84f2b051f2f0))
* Make the patch command work without specifying any selection ([ba159a3](https://github.com/ReVanced/revanced-cli/commit/ba159a35a9a99d18a4c1e04128b08ae336a49b3e))
* Print in new line correctly ([c2dc9d7](https://github.com/ReVanced/revanced-cli/commit/c2dc9d76be33c98284741e23c406500483c47753))
* Use the first connected device when no ADB device is specified ([5f952f3](https://github.com/ReVanced/revanced-cli/commit/5f952f35f5cb388b6509b2b4d905b8143ebc7996))
### Features
* Set patch options via CLI ([#336](https://github.com/ReVanced/revanced-cli/issues/336)) ([2300243](https://github.com/ReVanced/revanced-cli/commit/23002434b2d51c2a3b30b33dd0526261432d90ce))
* Show error about no installation device found at the beginning ([3300e6b](https://github.com/ReVanced/revanced-cli/commit/3300e6b4333ed1c4e6785cb82eca9016fc6d4a20))
* Simplify command and option names and descriptions ([#338](https://github.com/ReVanced/revanced-cli/issues/338)) ([6e7797a](https://github.com/ReVanced/revanced-cli/commit/6e7797a3f0525a8f48af7182157da0d045600ac2))
* Simplify option descriptions ([45c998b](https://github.com/ReVanced/revanced-cli/commit/45c998b335b65ac233fece8b804dc7410142691c))
### BREAKING CHANGES
* Options have been renamed.
* This commit changes various CLI options and removes the `options.json` file. Instead, patch options can now be passed via CLI options
# [5.0.0-dev.11](https://github.com/ReVanced/revanced-cli/compare/v5.0.0-dev.10...v5.0.0-dev.11) (2024-11-10)
### Bug Fixes
* List if patch option is required ([#346](https://github.com/ReVanced/revanced-cli/issues/346)) ([98ff0c3](https://github.com/ReVanced/revanced-cli/commit/98ff0c34fa71c3b3ecd96157d45a30ee2b8979c6))
# [5.0.0-dev.10](https://github.com/ReVanced/revanced-cli/compare/v5.0.0-dev.9...v5.0.0-dev.10) (2024-11-05)
### Bug Fixes
* Make CLI ArgGroup non-exclusive to be able to disable and enable patches at the same time ([1bb0d13](https://github.com/ReVanced/revanced-cli/commit/1bb0d13726fd5790c59cb6d28df3618c7606710d))
# [5.0.0-dev.9](https://github.com/ReVanced/revanced-cli/compare/v5.0.0-dev.8...v5.0.0-dev.9) (2024-11-05)
### Bug Fixes
* Print in new line correctly ([c2dc9d7](https://github.com/ReVanced/revanced-cli/commit/c2dc9d76be33c98284741e23c406500483c47753))
# [5.0.0-dev.8](https://github.com/ReVanced/revanced-cli/compare/v5.0.0-dev.7...v5.0.0-dev.8) (2024-10-17)
# [5.0.0-dev.7](https://github.com/ReVanced/revanced-cli/compare/v5.0.0-dev.6...v5.0.0-dev.7) (2024-10-16)

View File

@@ -63,11 +63,11 @@
![GitHub Workflow Status (with event)](https://img.shields.io/github/actions/workflow/status/ReVanced/revanced-cli/release.yml)
![GPLv3 License](https://img.shields.io/badge/License-GPL%20v3-yellow.svg)
Command line application to use ReVanced.
Command-line application to use ReVanced.
## ❓ About
ReVanced CLI is a command line application that uses [ReVanced Patcher](https://github.com/revanced/revanced-patcher) to patch Android apps.
ReVanced CLI is a command-line application that uses [ReVanced Patcher](https://github.com/revanced/revanced-patcher) to patch Android apps.
## 💪 Features
@@ -75,7 +75,7 @@ Some of the features ReVanced CLI provides are:
- 💉 **Patch apps**: Harness ReVanced Patcher to patch Android apps
- 💾 **Install and uninstall apps**: Install and uninstall Apps via ADB,
using the Android package manager, or by mounting using root permissions
using the Android package manager or by mounting using root permissions
- 📃 **List patches from patch bundles**: List available patches, compatible packages, and versions
- 💪 **Flexibility and functionality**: Apply any combination of patches to any version of Android apps

View File

@@ -59,10 +59,10 @@ tasks {
}
shadowJar {
exclude("/prebuilt/linux/aapt", "/prebuilt/windows/aapt.exe", "/prebuilt/*/aapt_*")
minimize {
exclude(dependency("org.jetbrains.kotlin:.*"))
exclude(dependency("org.bouncycastle:.*"))
exclude(dependency("app.revanced:.*"))
exclude(dependency("app.revanced:revanced-patcher"))
}
}

View File

@@ -4,7 +4,7 @@ To use ReVanced CLI, you will need to fulfill specific requirements.
## 🤝 Requirements
- Java Runtime Environment 11 or higher ([Eclipse Temurin JRE](https://adoptium.net/temurin/releases/?package=jre) or [OpenJDK](https://jdk.java.net/archive/))
- Java Runtime Environment 11 ([Azul Zulu JRE](https://www.azul.com/downloads/?version=java-11-lts&package=jre#zulu) or [OpenJDK](https://jdk.java.net/archive/))
- [Android Debug Bridge (ADB)](https://developer.android.com/studio/command-line/adb) if you want to install the patched APK file on your device
- x86 or x86-64 (For [other architectures](https://github.com/ReVanced/revanced-manager/tree/main/android/app/src/main/jniLibs) use the `--custom-aapt2-binary` option)

View File

@@ -1,4 +1,4 @@
org.gradle.parallel = true
org.gradle.caching = true
kotlin.code.style = official
version = 5.0.0-dev.8
version = 5.0.2-dev.1

View File

@@ -3,8 +3,8 @@ shadow = "8.1.1"
kotlin = "2.0.20"
kotlinx = "1.8.1"
picocli = "4.7.6"
revanced-patcher = "20.0.2"
revanced-library = "3.0.0"
revanced-patcher = "21.0.0"
revanced-library = "3.1.0"
[libraries]
kotlin-test = { module = "org.jetbrains.kotlin:kotlin-test", version.ref = "kotlin" }

View File

@@ -1,29 +0,0 @@
@echo off
echo Check, if OpenJDK/ Eclipse Temurin 11 or newer is installed.
pause
echo:
cd modules
call run java -version
cd ..
echo:
set /P INSTALLED_JAVA=Can you see OpenJDK/ Eclipse Temurin 11 or newer? (y/n)
if "%INSTALLED_JAVA%"=="y" (
echo The environment is set up.
pause
exit
)
cls
echo Install Eclipse Temurin JRE 21.
pause
cd modules
call install-java
cd ..
echo The environment is set up. Rerun this script to check your environment.
pause

View File

@@ -1,11 +0,0 @@
@echo off
echo Download necessary files from GitHub.
pause
cd modules
call composite download %~dp0\workspace
cd ..
echo Files downloaded.
pause

View File

@@ -1,14 +0,0 @@
@echo off
setlocal
echo Patch an APK with the patches in the workspace.
pause
cd modules
call composite patch %~dp0\workspace
cd ..
mv %~dp0\workspace\patched.apk %~dp0\patched.apk
echo Patched APK saved at %~dp0\patched.apk.
pause

View File

@@ -1,11 +0,0 @@
@echo off
echo Clean the workspace.
pause
cd modules
call composite clean %~dp0\workspace
cd ..
echo Cleaned workspace.
pause

View File

@@ -1,8 +0,0 @@
# 📜 Scripts
This directory contain click-to-run scripts to use ReVanced CLI.
## Prerequisites
- [cURL](https://curl.haxx.se/)
- [WinGet](https://aka.ms/getwinget), if you are on Windows

View File

@@ -1 +0,0 @@
notepad modules\env.bat

View File

@@ -1,12 +0,0 @@
@echo off
setlocal
for /f "tokens=8 delims=. " %%a in ('java --version 2^>nul ^| findstr /r "build"') do (
set JAVA_VERSION_MAJOR=%%a
goto :break
)
:break
if %JAVA_VERSION_MAJOR% LSS 11 (
echo It looks like Java version is less than 11. Install OpenJDK/ Eclipse Temurin 11 or newer.
)

View File

@@ -1,51 +0,0 @@
@echo off
setlocal EnableDelayedExpansion
if "%~1"=="" (
set INVALID_ARGS=true
)
if "%~2"=="" (
set INVALID_ARGS=true
)
if defined INVALID_ARGS (
echo Runs curated compositions of scripts.
echo:
echo Usage: composite ^<script^> ^<workspace^>
echo Example: composite patch C:/revanced
echo:
echo Available commands:
echo: download - Download files
echo: patch - Patches an application
echo: clean - Cleans the workspace
echo: env - Check for a valid environment setup
exit /b 1
)
call env
set WORKSPACE=%2
if "%~1"=="download" (
call create %WORKSPACE%
if not exist %WORKSPACE%/revanced-cli.jar (
echo Downloading ReVanced CLI...
call download %CLI_REPO% jar %WORKSPACE%/revanced-cli.jar
)
if not exist %WORKSPACE%/patches.rvp (
echo Downloading ReVanced patches...
call download %PATCHES_REPO% jar %WORKSPACE%/patches.rvp
)
)
if "%~1"=="patch" (
set /p APK="Path to the APK file: "
call patch !APK! %WORKSPACE%
)
if "%~1"=="clean" (
call delete %WORKSPACE%
)
if "%~1"=="env" (
call check-java
)

View File

@@ -1,19 +0,0 @@
@echo off
setlocal
if "%~1"=="" (
set INVALID_ARGS=true
)
if defined INVALID_ARGS (
echo Creates a directory using the mkdir command.
echo:
echo Usage: create ^<path^>
echo Example: create C:/revanced
exit /b 1
)
set DIRECTORY=%1
if not exist %DIRECTORY% (
run "mkdir.exe" -p %DIRECTORY%
)

View File

@@ -1,20 +0,0 @@
@echo off
setlocal
if "%~1"=="" (
set INVALID_ARGS=true
)
if defined INVALID_ARGS (
echo Deletes a directory relative to the current directory using the rmdir command.
echo:
echo Usage: delete ^<path^>
echo Example: delete C:/revanced
exit /b 1
)
set DIRECTORY=%1
if exist %DIRECTORY% (
echo Confirm deletion of
run rmdir /s %DIRECTORY%
)

View File

@@ -1,30 +0,0 @@
@echo off
setlocal
if "%~1"=="" (
set INVALID_ARGS=true
)
if "%~2"=="" (
set INVALID_ARGS=true
)
if "%~3"=="" (
set INVALID_ARGS=true
)
if defined INVALID_ARGS (
echo Downloads a file from a GitHub repository release.
echo:
echo Usage: download ^<repo^> ^<asset-extension^> ^<out^>
echo Example: download revanced/revanced-cli jar C:/revanced/revanced-cli.jar
exit /b 1
)
set REPO=%1
set ASSET_EXTENSION=%2
set OUT=%3
set URL=https://api.github.com/repos/%REPO%/releases/latest
for /f "delims=" %%i in ('curl -s %URL% ^| jq -r ".assets[] | select(.name | endswith(\"%ASSET_EXTENSION%\")) | .browser_download_url"') do (
set JAR_URL=%%i
)
run curl --silent --location --output %OUT% %JAR_URL%

View File

@@ -1,6 +0,0 @@
@echo off
:: Customize your environment.
set CLI_REPO=revanced/revanced-cli
set PATCHES_REPO=revanced/revanced-patches

View File

@@ -1 +0,0 @@
run install EclipseAdoptium.Temurin.21.JRE

View File

@@ -1 +0,0 @@
run install jqlang.jq

View File

@@ -1,14 +0,0 @@
@echo off
if "%~1"=="" (
set INVALID_ARGS=true
)
if defined INVALID_ARGS (
echo Installs a package using winget.
echo:
echo Usage: install ^<id^>
echo Example: install jqlang.jq
exit /b 1
)
run winget install -e --id=%1

View File

@@ -1,28 +0,0 @@
@echo off
setlocal
if "%~1"=="" (
set INVALID_ARGS=true
)
if "%~2"=="" (
set INVALID_ARGS=true
)
if defined INVALID_ARGS (
echo Patches an application using the specified patches.
echo:
echo Usage: patch ^<apk^> ^<workspace^>
echo Example: patch C:/app.apk C:/workspace
exit /b 1
)
set APK=%1
set WORKSPACE=%2
call run java -jar %WORKSPACE%/revanced-cli.jar patch ^
--patch-bundle %WORKSPACE%/patches.rvp ^
--temporary-files-path %WORKSPACE%/temporary-files ^
--out %WORKSPACE%/patched.apk ^
--purge ^
%APK%
mv %WORKSPACE%/patched.apk

View File

@@ -1,23 +0,0 @@
@echo off
if "%~1"=="" (
set INVALID_ARGS=true
)
if defined INVALID_ARGS (
echo Run a command with arguments.
echo:
echo Usage: run.bat ^<command^> [arguments]
echo Example: run.bat echo Hello, World!
exit /b 1
)
%*
if %ERRORLEVEL% NEQ 0 (
echo:
echo Failed to run command with exit code %ERRORLEVEL%.
echo Failed command: %*
echo:
pause
exit /b %ERRORLEVEL%
)

View File

@@ -89,6 +89,7 @@ internal object ListPatchesCommand : Runnable {
buildString {
appendLine("Title: $title")
description?.let { appendLine("Description: $it") }
appendLine("Required: $required")
default?.let {
appendLine("Key: $key")
append("Default: $it")
@@ -111,7 +112,7 @@ internal object ListPatchesCommand : Runnable {
if (withDescriptions) append("\nDescription: ${patch.description}")
append("Enabled: ${patch.use}")
append("\nEnabled: ${patch.use}")
if (withOptions && patch.options.isNotEmpty()) {
appendLine("\nOptions:")

View File

@@ -29,11 +29,11 @@ internal object PatchCommand : Runnable {
@Spec
private lateinit var spec: CommandSpec
@ArgGroup(multiplicity = "0..*")
@ArgGroup(exclusive = false, multiplicity = "0..*")
private var selection = mutableSetOf<Selection>()
internal class Selection {
@ArgGroup(exclusive = false, multiplicity = "1")
@ArgGroup(exclusive = false)
internal var enabled: EnableSelection? = null
internal class EnableSelection {
@@ -65,7 +65,7 @@ internal object PatchCommand : Runnable {
internal var options = mutableMapOf<String, Any?>()
}
@ArgGroup(exclusive = false, multiplicity = "1")
@ArgGroup(exclusive = false)
internal var disable: DisableSelection? = null
internal class DisableSelection {
@@ -115,21 +115,27 @@ internal object PatchCommand : Runnable {
this.outputFilePath = outputFilePath?.absoluteFile
}
@CommandLine.Option(
names = ["-i", "--install"],
description = ["Serial of the ADB device to install to. If not specified, the first connected device will be used."],
// Empty string to indicate that the first connected device should be used.
fallbackValue = "",
arity = "0..1",
)
private var deviceSerial: String? = null
@ArgGroup(exclusive = false, multiplicity = "0..1")
internal var installation: Installation? = null
@CommandLine.Option(
names = ["--mount"],
description = ["Install the patched APK file by mounting."],
showDefaultValue = ALWAYS,
)
private var mount: Boolean = false
internal class Installation {
@CommandLine.Option(
names = ["-i", "--install"],
required = true,
description = ["Serial of the ADB device to install to. If not specified, the first connected device will be used."],
fallbackValue = "", // Empty string is used to select the first of connected devices.
arity = "0..1",
)
internal var deviceSerial: String? = null
@CommandLine.Option(
names = ["--mount"],
required = false,
description = ["Install the patched APK file by mounting."],
showDefaultValue = ALWAYS,
)
internal var mount: Boolean = false
}
@CommandLine.Option(
names = ["--keystore"],
@@ -245,11 +251,11 @@ internal object PatchCommand : Runnable {
keyStoreFilePath ?: outputFilePath.parentFile
.resolve("${outputFilePath.nameWithoutExtension}.keystore")
val installer = if (deviceSerial != null) {
val deviceSerial = deviceSerial!!.ifEmpty { null }
val installer = if (installation?.deviceSerial != null) {
val deviceSerial = installation?.deviceSerial!!.ifEmpty { null }
try {
if (mount) {
if (installation?.mount == true) {
AdbRootInstaller(deviceSerial)
} else {
AdbInstaller(deviceSerial)
@@ -291,7 +297,6 @@ internal object PatchCommand : Runnable {
patcherTemporaryFilesPath,
aaptBinaryPath?.path,
patcherTemporaryFilesPath.absolutePath,
true,
),
).use { patcher ->
val packageName = patcher.context.packageMetadata.packageName
@@ -333,7 +338,7 @@ internal object PatchCommand : Runnable {
apk.copyTo(temporaryFilesPath.resolve(apk.name), overwrite = true).apply {
patcherResult.applyTo(this)
}.let { patchedApkFile ->
if (!mount) {
if (installation?.mount != true) {
ApkUtils.signApk(
patchedApkFile,
outputFilePath,
@@ -356,9 +361,7 @@ internal object PatchCommand : Runnable {
// region Install.
deviceSerial?.let {
val deviceSerial = it.ifEmpty { null }
installation?.deviceSerial?.let {
runBlocking {
when (val result = installer!!.install(Installer.Apk(outputFilePath, packageName))) {
RootInstallerResult.FAILURE -> logger.severe("Failed to mount the patched APK file")