@@ -19,13 +19,23 @@ import app.morphe.cli.command.model.mergeWith
1919import app.morphe.cli.command.model.toPatchBundle
2020import app.morphe.cli.command.model.toSerializablePatch
2121import app.morphe.cli.command.model.withUpdatedBundle
22+ import app.morphe.engine.PatchEngine
23+ import app.morphe.engine.PatchEngine.Config.Companion.DEFAULT_KEYSTORE_ALIAS
24+ import app.morphe.engine.PatchEngine.Config.Companion.DEFAULT_KEYSTORE_PASSWORD
25+ import app.morphe.engine.PatchEngine.Config.Companion.LEGACY_KEYSTORE_ALIAS
26+ import app.morphe.engine.PatchEngine.Config.Companion.LEGACY_KEYSTORE_PASSWORD
2227import app.morphe.engine.UpdateChecker
23- import app.morphe.patcher.apk.ApkUtils
24- import app.morphe.patcher.apk.ApkUtils.applyTo
25- import app.morphe.library.installation.installer.*
28+ import app.morphe.library.installation.installer.AdbInstaller
29+ import app.morphe.library.installation.installer.AdbInstallerResult
30+ import app.morphe.library.installation.installer.AdbRootInstaller
31+ import app.morphe.library.installation.installer.DeviceNotFoundException
32+ import app.morphe.library.installation.installer.Installer
33+ import app.morphe.library.installation.installer.RootInstallerResult
2634import app.morphe.patcher.Patcher
2735import app.morphe.patcher.PatcherConfig
2836import app.morphe.patcher.apk.ApkMerger
37+ import app.morphe.patcher.apk.ApkUtils
38+ import app.morphe.patcher.apk.ApkUtils.applyTo
2939import app.morphe.patcher.logging.toMorpheLogger
3040import app.morphe.patcher.patch.Patch
3141import app.morphe.patcher.patch.loadPatchesFromJar
@@ -196,13 +206,13 @@ internal object PatchCommand : Callable<Int> {
196206 description = [" Alias of the private key and certificate pair keystore entry." ],
197207 showDefaultValue = ALWAYS ,
198208 )
199- private var keyStoreEntryAlias = " Morphe Key "
209+ private var keyStoreEntryAlias = PatchEngine . Config . DEFAULT_KEYSTORE_ALIAS
200210
201211 @CommandLine.Option (
202212 names = [" --keystore-entry-password" ],
203213 description = [" Password of the keystore entry." ],
204214 )
205- private var keyStoreEntryPassword = " " // Empty password by default
215+ private var keyStoreEntryPassword = PatchEngine . Config . DEFAULT_KEYSTORE_PASSWORD
206216
207217 @CommandLine.Option (
208218 names = [" --signer" ],
@@ -666,17 +676,34 @@ internal object PatchCommand : Callable<Int> {
666676 patchingResult.addStepResult(
667677 PatchingStep .SIGNING ,
668678 {
669- ApkUtils .signApk(
670- patchedApkFile,
671- outputFilePath,
672- signer,
673- ApkUtils .KeyStoreDetails (
674- keystoreFilePath,
675- keyStorePassword,
676- keyStoreEntryAlias,
677- keyStoreEntryPassword,
678- ),
679- )
679+ fun signApk (alias : String , password : String ) {
680+ ApkUtils .signApk(
681+ patchedApkFile,
682+ outputFilePath,
683+ signer,
684+ ApkUtils .KeyStoreDetails (
685+ keystoreFilePath,
686+ keyStorePassword,
687+ alias,
688+ password,
689+ )
690+ )
691+ }
692+ try {
693+ signApk(keyStoreEntryAlias, keyStoreEntryPassword)
694+ } catch (e: Exception ){
695+ // Retry with legacy keystore defaults.
696+ if (keyStoreEntryAlias == DEFAULT_KEYSTORE_ALIAS &&
697+ keyStoreEntryPassword == DEFAULT_KEYSTORE_PASSWORD &&
698+ keystoreFilePath.exists()
699+ ) {
700+ logger.info(" Using legacy keystore credentials" )
701+
702+ signApk(LEGACY_KEYSTORE_ALIAS , LEGACY_KEYSTORE_PASSWORD )
703+ } else {
704+ throw e
705+ }
706+ }
680707 }
681708 )
682709 } else {
0 commit comments