From 1f76704f950b58c3fa49ab7a96f21e3a88562307 Mon Sep 17 00:00:00 2001 From: aliernfrog <45766489+aliernfrog@users.noreply.github.com> Date: Tue, 29 Nov 2022 20:39:46 +0300 Subject: [PATCH] fix: publicSourceDir returning null (#17) --- .../main/java/app/revanced/manager/patcher/PatcherUtils.kt | 4 +++- .../revanced/manager/ui/viewmodel/AppSelectorViewModel.kt | 7 +++++-- .../manager/ui/viewmodel/PatchingScreenViewModel.kt | 3 ++- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/app/revanced/manager/patcher/PatcherUtils.kt b/app/src/main/java/app/revanced/manager/patcher/PatcherUtils.kt index 1057dea..01f4ef4 100644 --- a/app/src/main/java/app/revanced/manager/patcher/PatcherUtils.kt +++ b/app/src/main/java/app/revanced/manager/patcher/PatcherUtils.kt @@ -21,6 +21,7 @@ class PatcherUtils(val app: Application) { val patches = mutableStateOf>>>>(Resource.Loading) val filteredPatches = mutableStateListOf() val selectedAppPackage = mutableStateOf(Optional.empty()) + val selectedAppPackagePath = mutableStateOf(null) val selectedPatches = mutableStateListOf() lateinit var patchBundleFile: String @@ -48,8 +49,9 @@ class PatcherUtils(val app: Application) { fun getSelectedPackageInfo(): PackageInfo? { return if (selectedAppPackage.value.isPresent) { + val path = selectedAppPackage.value.get().publicSourceDir ?: selectedAppPackagePath.value ?: return null app.packageManager.getPackageArchiveInfo( - selectedAppPackage.value.get().publicSourceDir, 1 + path, 1 ) } else { null diff --git a/app/src/main/java/app/revanced/manager/ui/viewmodel/AppSelectorViewModel.kt b/app/src/main/java/app/revanced/manager/ui/viewmodel/AppSelectorViewModel.kt index ea92ae5..49ae39b 100644 --- a/app/src/main/java/app/revanced/manager/ui/viewmodel/AppSelectorViewModel.kt +++ b/app/src/main/java/app/revanced/manager/ui/viewmodel/AppSelectorViewModel.kt @@ -27,6 +27,7 @@ class AppSelectorViewModel( val patches = patcherUtils.patches private val filteredPatches = patcherUtils.filteredPatches private val selectedAppPackage = patcherUtils.selectedAppPackage + private val selectedAppPackagePath = patcherUtils.selectedAppPackagePath private val selectedPatches = patcherUtils.selectedPatches init { @@ -64,7 +65,7 @@ class AppSelectorViewModel( return app.packageManager.getApplicationIcon(info) } - fun setSelectedAppPackage(appId: ApplicationInfo) { + fun setSelectedAppPackage(appId: ApplicationInfo, appPackagePath: String? = null) { selectedAppPackage.value.ifPresent { s -> if (s != appId) { selectedPatches.clear() @@ -72,6 +73,7 @@ class AppSelectorViewModel( } } selectedAppPackage.value = Optional.of(appId) + selectedAppPackagePath.value = appPackagePath } fun setSelectedAppPackageFromFile(file: Uri?) { @@ -84,7 +86,8 @@ class AppSelectorViewModel( setSelectedAppPackage( app.packageManager.getPackageArchiveInfo( apkDir.path, 1 - )!!.applicationInfo + )!!.applicationInfo, + apkDir.absolutePath ) } catch (e: Exception) { Log.e(tag, "Failed to load apk", e) diff --git a/app/src/main/java/app/revanced/manager/ui/viewmodel/PatchingScreenViewModel.kt b/app/src/main/java/app/revanced/manager/ui/viewmodel/PatchingScreenViewModel.kt index 6fd7bf9..1e19acc 100644 --- a/app/src/main/java/app/revanced/manager/ui/viewmodel/PatchingScreenViewModel.kt +++ b/app/src/main/java/app/revanced/manager/ui/viewmodel/PatchingScreenViewModel.kt @@ -131,6 +131,7 @@ class PatchingScreenViewModel( val reVancedFolder = Environment.getExternalStorageDirectory().resolve("ReVanced").also { it.mkdirs() } val appInfo = patcherUtils.selectedAppPackage.value.get() + val appPath = patcherUtils.selectedAppPackagePath.value log(PatchLog.Info("Checking prerequisites...")) val patches = patcherUtils.findPatchesByIds(patcherUtils.selectedPatches) @@ -146,7 +147,7 @@ class PatchingScreenViewModel( log(PatchLog.Info("Copying APK from device...")) withContext(Dispatchers.IO) { Files.copy( - File(appInfo.publicSourceDir).toPath(), + File(appPath ?: appInfo.publicSourceDir).toPath(), inputFile.toPath(), StandardCopyOption.REPLACE_EXISTING )