diff --git a/android/app/src/main/kotlin/app/revanced/manager/MainActivity.kt b/android/app/src/main/kotlin/app/revanced/manager/MainActivity.kt index fa12cedc..99112cd9 100644 --- a/android/app/src/main/kotlin/app/revanced/manager/MainActivity.kt +++ b/android/app/src/main/kotlin/app/revanced/manager/MainActivity.kt @@ -45,6 +45,7 @@ class MainActivity : FlutterActivity() { val cacheDirPath = call.argument("cacheDirPath") val mergeIntegrations = call.argument("mergeIntegrations") val resourcePatching = call.argument("resourcePatching") + val keyStoreFilePath = call.argument("keyStoreFilePath") if (patchBundleFilePath != null && originalFilePath != null && inputFilePath != null && @@ -54,7 +55,8 @@ class MainActivity : FlutterActivity() { selectedPatches != null && cacheDirPath != null && mergeIntegrations != null && - resourcePatching != null + resourcePatching != null && + keyStoreFilePath != null ) { runPatcher( result, @@ -67,7 +69,8 @@ class MainActivity : FlutterActivity() { selectedPatches, cacheDirPath, mergeIntegrations, - resourcePatching + resourcePatching, + keyStoreFilePath ) } else { result.notImplemented() @@ -89,13 +92,15 @@ class MainActivity : FlutterActivity() { selectedPatches: List, cacheDirPath: String, mergeIntegrations: Boolean, - resourcePatching: Boolean + resourcePatching: Boolean, + keyStoreFilePath: String ) { val originalFile = File(originalFilePath) val inputFile = File(inputFilePath) val patchedFile = File(patchedFilePath) val outFile = File(outFilePath) val integrations = File(integrationsPath) + val keyStoreFile = File(keyStoreFilePath) val patches = DexPatchBundle( @@ -314,7 +319,7 @@ class MainActivity : FlutterActivity() { ) ) } - Signer("ReVanced", "s3cur3p@ssw0rd").signApk(patchedFile, outFile) + Signer("ReVanced", "s3cur3p@ssw0rd").signApk(patchedFile, outFile, keyStoreFile) handler.post { installerChannel.invokeMethod( diff --git a/android/app/src/main/kotlin/app/revanced/manager/utils/signing/Signer.kt b/android/app/src/main/kotlin/app/revanced/manager/utils/signing/Signer.kt index 147e56c6..7438b1e5 100644 --- a/android/app/src/main/kotlin/app/revanced/manager/utils/signing/Signer.kt +++ b/android/app/src/main/kotlin/app/revanced/manager/utils/signing/Signer.kt @@ -49,10 +49,9 @@ internal class Signer( return JcaX509CertificateConverter().getCertificate(builder.build(signer)) to pair.private } - fun signApk(input: File, output: File) { + fun signApk(input: File, output: File, ks: File) { Security.addProvider(BouncyCastleProvider()) - val ks = File(input.parent, "revanced-cli.keystore") if (!ks.exists()) newKeystore(ks) val keyStore = KeyStore.getInstance("BKS", "BC") diff --git a/lib/services/patcher_api.dart b/lib/services/patcher_api.dart index 9c5cb9ea..1bed078c 100644 --- a/lib/services/patcher_api.dart +++ b/lib/services/patcher_api.dart @@ -18,6 +18,7 @@ class PatcherAPI { final ManagerAPI _managerAPI = locator(); final RootAPI _rootAPI = RootAPI(); late Directory _tmpDir; + late File _keyStoreFile; List _patches = []; File? _outFile; @@ -25,6 +26,7 @@ class PatcherAPI { await _loadPatches(); Directory appCache = await getTemporaryDirectory(); _tmpDir = Directory('${appCache.path}/patcher'); + _keyStoreFile = File('${appCache.path}/revanced-manager.keystore'); cleanPatcher(); } @@ -138,6 +140,7 @@ class PatcherAPI { 'cacheDirPath': cacheDir.path, 'mergeIntegrations': mergeIntegrations, 'resourcePatching': resourcePatching, + 'keyStoreFilePath': _keyStoreFile.path, }, ); }