From 0bfa776ce7402074618516435a750898ab318b7b Mon Sep 17 00:00:00 2001 From: Ushie Date: Sat, 23 Sep 2023 00:24:17 +0300 Subject: [PATCH] fix: npe when loading patch bundle on android 8 --- .../kotlin/app/revanced/manager/flutter/MainActivity.kt | 5 ++++- lib/services/manager_api.dart | 8 ++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/android/app/src/main/kotlin/app/revanced/manager/flutter/MainActivity.kt b/android/app/src/main/kotlin/app/revanced/manager/flutter/MainActivity.kt index ef7a2a65..22463f8c 100644 --- a/android/app/src/main/kotlin/app/revanced/manager/flutter/MainActivity.kt +++ b/android/app/src/main/kotlin/app/revanced/manager/flutter/MainActivity.kt @@ -94,9 +94,12 @@ class MainActivity : FlutterActivity() { "getPatches" -> { val patchBundleFilePath = call.argument("patchBundleFilePath") + val cacheDirPath = call.argument("cacheDirPath") + if (patchBundleFilePath != null) { val patches = PatchBundleLoader.Dex( - File(patchBundleFilePath) + File(patchBundleFilePath), + optimizedDexDirectory = File(cacheDirPath) ).map { patch -> val map = HashMap() map["\"name\""] = "\"${patch.patchName.replace("\"","\\\"")}\"" diff --git a/lib/services/manager_api.dart b/lib/services/manager_api.dart index af996fe2..3401432b 100644 --- a/lib/services/manager_api.dart +++ b/lib/services/manager_api.dart @@ -306,12 +306,20 @@ class ManagerAPI { return patches; } final File? patchBundleFile = await downloadPatches(); + final Directory appCache = await getTemporaryDirectory(); + Directory('${appCache.path}/cache').createSync(); + final Directory workDir = + Directory('${appCache.path}/cache').createTempSync('tmp-'); + final Directory cacheDir = Directory('${workDir.path}/cache'); + cacheDir.createSync(); + if (patchBundleFile != null) { try { final patchesObject = await PatcherAPI.patcherChannel.invokeMethod( 'getPatches', { 'patchBundleFilePath': patchBundleFile.path, + 'cacheDirPath': cacheDir.path, }, ); final List> patchesMap = [];