From a82e0712802acae5188d89ce79035a10d43d7a28 Mon Sep 17 00:00:00 2001 From: Bitmap-Ubuntu Date: Mon, 18 Mar 2024 19:31:52 +0530 Subject: [PATCH] Added Ubuntu Compatibility --- src/jvmMain/kotlin/command/CommandBuilder.kt | 44 ++++++++--- .../kotlin/command/CommandBuilderTest.kt | 79 ++++++++++++++----- 2 files changed, 89 insertions(+), 34 deletions(-) diff --git a/src/jvmMain/kotlin/command/CommandBuilder.kt b/src/jvmMain/kotlin/command/CommandBuilder.kt index 59168f8..d5718bc 100644 --- a/src/jvmMain/kotlin/command/CommandBuilder.kt +++ b/src/jvmMain/kotlin/command/CommandBuilder.kt @@ -1,6 +1,8 @@ package command +import utils.Log import utils.SigningMode +import utils.Utils class CommandBuilder { private var bundletoolPath: String = "" @@ -39,13 +41,13 @@ class CommandBuilder { fun getAdbVerifyCommand(): String { val (forVerify, path) = adbVerifyCommandExecute if (forVerify) { - return "\"${path}\" version" + return if (Utils.isWindowsOS()) "\"${path}\" version" else "$path version" } return "" } fun getAdbFetchCommand(adbPath: String): String { - return "\"${adbPath}\" devices" + return if (Utils.isWindowsOS()) "\"${adbPath}\" devices" else "$adbPath devices" } fun validateAndGetCommand(): Pair { @@ -69,23 +71,38 @@ class CommandBuilder { private fun getCommand(): String { val commandBuilder = StringBuilder() - commandBuilder.append("java -jar \"${bundletoolPath}\" build-apks ") + if (Utils.isWindowsOS()) { + commandBuilder.append("java -jar \"$bundletoolPath\" build-apks ") + if (isAapt2PathEnabled) { + commandBuilder.append("--aapt2=\"$aapt2Path\" ") + } + commandBuilder.append( + "--bundle=\"${aabFilePath.first}${aabFilePath.second}\" --output=\"${aabFilePath.first}${ + aabFilePath.second.split( + "." + )[0] + }.apks\" " + ) + } else { + commandBuilder.append("java -jar $bundletoolPath build-apks ") + if (isAapt2PathEnabled) { + commandBuilder.append("--aapt2=$aapt2Path ") + } + commandBuilder.append( + "--bundle=${aabFilePath.first}${aabFilePath.second} --output=${aabFilePath.first}${ + aabFilePath.second.split( + "." + )[0] + }.apks " + ) + } + if (isUniversalMode) { commandBuilder.append("--mode=universal ") } if (isOverwrite) { commandBuilder.append("--overwrite ") } - if (isAapt2PathEnabled) { - commandBuilder.append("--aapt2=\"$aapt2Path\" ") - } - commandBuilder.append( - "--bundle=\"${aabFilePath.first}${aabFilePath.second}\" --output=\"${aabFilePath.first}${ - aabFilePath.second.split( - "." - )[0] - }.apks\" " - ) if (signingMode == SigningMode.RELEASE) { commandBuilder.append("--ks=$keyStorePath --ks-pass=pass:$keyStorePassword --ks-key-alias=$keyAlias --key-pass=pass:$keyPassword ") @@ -95,6 +112,7 @@ class CommandBuilder { commandBuilder.append("--device-id=$adbSerialId ") } + Log.i("COMMAND_BUILDER -> $commandBuilder") return commandBuilder.toString() } } \ No newline at end of file diff --git a/src/jvmTest/kotlin/command/CommandBuilderTest.kt b/src/jvmTest/kotlin/command/CommandBuilderTest.kt index feeb665..cea2892 100644 --- a/src/jvmTest/kotlin/command/CommandBuilderTest.kt +++ b/src/jvmTest/kotlin/command/CommandBuilderTest.kt @@ -3,6 +3,7 @@ package command import org.junit.Assert.assertEquals import org.junit.Test import utils.SigningMode +import utils.Utils class CommandBuilderTest { @@ -57,10 +58,17 @@ class CommandBuilderTest { .keyPassword("keyPassword") .isUniversalMode(false).validateAndGetCommand() println(result) - assertEquals( - "java -jar \"bundletool.jar\" build-apks --bundle=\"/path/to/file.aab\" --output=\"/path/to/file.apks\" --ks=/path/to/keystore.jks --ks-pass=pass:keystorePassword --ks-key-alias=keyAlias --key-pass=pass:keyPassword ", - result.first - ) + if (Utils.isWindowsOS()) { + assertEquals( + "java -jar \"bundletool.jar\" build-apks --bundle=\"/path/to/file.aab\" --output=\"/path/to/file.apks\" --ks=/path/to/keystore.jks --ks-pass=pass:keystorePassword --ks-key-alias=keyAlias --key-pass=pass:keyPassword ", + result.first + ) + } else { + assertEquals( + "java -jar bundletool.jar build-apks --bundle=/path/to/file.aab --output=/path/to/file.apks --ks=/path/to/keystore.jks --ks-pass=pass:keystorePassword --ks-key-alias=keyAlias --key-pass=pass:keyPassword ", + result.first + ) + } assertEquals(true, result.second) } @@ -73,10 +81,17 @@ class CommandBuilderTest { .isUniversalMode(false) .validateAndGetCommand() println(result) - assertEquals( - "java -jar \"bundletool.jar\" build-apks --bundle=\"/path/to/file.aab\" --output=\"/path/to/file.apks\" ", - result.first - ) + if (Utils.isWindowsOS()) { + assertEquals( + "java -jar \"bundletool.jar\" build-apks --bundle=\"/path/to/file.aab\" --output=\"/path/to/file.apks\" ", + result.first + ) + } else { + assertEquals( + "java -jar bundletool.jar build-apks --bundle=/path/to/file.aab --output=/path/to/file.apks ", + result.first + ) + } assertEquals(true, result.second) } @@ -85,7 +100,8 @@ class CommandBuilderTest { val result = CommandBuilder() .verifyAdbPath(true, "/path/to/adb") .getAdbVerifyCommand() - assertEquals("\"/path/to/adb\" version", result) + if (Utils.isWindowsOS()) assertEquals("\"/path/to/adb\" version", result) + else assertEquals("/path/to/adb version", result) } @Test @@ -96,10 +112,17 @@ class CommandBuilderTest { .isUniversalMode(true) .validateAndGetCommand() println(result) - assertEquals( - "java -jar \"bundletool.jar\" build-apks --mode=universal --bundle=\"/path/to/file.aab\" --output=\"/path/to/file.apks\" ", - result.first - ) + if (Utils.isWindowsOS()) { + assertEquals( + "java -jar \"bundletool.jar\" build-apks --bundle=\"/path/to/file.aab\" --output=\"/path/to/file.apks\" --mode=universal ", + result.first + ) + } else { + assertEquals( + "java -jar bundletool.jar build-apks --bundle=/path/to/file.aab --output=/path/to/file.apks --mode=universal ", + result.first + ) + } assertEquals(true, result.second) } @@ -111,10 +134,17 @@ class CommandBuilderTest { .isOverwrite(true) .isUniversalMode(false).validateAndGetCommand() println(result) - assertEquals( - "java -jar \"bundletool.jar\" build-apks --overwrite --bundle=\"/path/to/file.aab\" --output=\"/path/to/file.apks\" ", - result.first - ) + if (Utils.isWindowsOS()) { + assertEquals( + "java -jar \"bundletool.jar\" build-apks --bundle=\"/path/to/file.aab\" --output=\"/path/to/file.apks\" --overwrite ", + result.first + ) + } else { + assertEquals( + "java -jar bundletool.jar build-apks --bundle=/path/to/file.aab --output=/path/to/file.apks --overwrite ", + result.first + ) + } assertEquals(true, result.second) } @@ -146,10 +176,17 @@ class CommandBuilderTest { .adbSerialId("RZCWC0EZLEH") .validateAndGetCommand() println(result) - assertEquals( - "java -jar \"bundletool.jar\" build-apks --bundle=\"/path/to/file.aab\" --output=\"/path/to/file.apks\" --device-id=RZCWC0EZLEH ", - result.first - ) + if (Utils.isWindowsOS()) { + assertEquals( + "java -jar \"bundletool.jar\" build-apks --bundle=\"/path/to/file.aab\" --output=\"/path/to/file.apks\" --device-id=RZCWC0EZLEH ", + result.first + ) + } else { + assertEquals( + "java -jar bundletool.jar build-apks --bundle=/path/to/file.aab --output=/path/to/file.apks --device-id=RZCWC0EZLEH ", + result.first + ) + } assertEquals(true, result.second) } }