From b05a1ea1f1066ca05e7828ad4b8b7832dbe4cf57 Mon Sep 17 00:00:00 2001 From: Tristan Ritchie Date: Wed, 10 Jan 2024 14:54:53 +0000 Subject: [PATCH] parse adb command output on host Change-Id: I6b1a0c7612d5ecb0edc0a48ae91b1557b7d6c8e1 --- renderdoc/android/android.cpp | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/renderdoc/android/android.cpp b/renderdoc/android/android.cpp index 36cd23ccd2..512380c7f0 100644 --- a/renderdoc/android/android.cpp +++ b/renderdoc/android/android.cpp @@ -367,17 +367,14 @@ AndroidInstallPermissionCheckResult CheckAndroidServerInstallPermissions(const r { return AndroidInstallPermissionCheckResult::Correct; } - // Command to check that the Android Server is queryable by other APKs (API>30) - // for RenderDoc layer discovery. + // Command to check that the Android Server is queryable by other APKs (API>=30) Process::ProcessResult adbCheck = - adbExecCommand(deviceID, - "shell \"dumpsys package queries | sed -n '/forceQueryable/,/queries via " - "package name/p' | grep " + - packageName + "\"", - ".", true); - - // Check the output of 'grep' - no output means no match - if(adbCheck.strStdout.empty()) + adbExecCommand(deviceID, "shell dumpsys package queries " + packageName, ".", true); + // parse command output + int32_t sectionStart = adbCheck.strStdout.find("forceQueryable"); + int32_t sectionEnd = adbCheck.strStdout.find("queries via package name", sectionStart); + int32_t isPackageQueryable = adbCheck.strStdout.find(packageName, sectionStart, sectionEnd); + if(isPackageQueryable == -1) { RDCERR("Failed to install with 'force queryable' permissions."); return AndroidInstallPermissionCheckResult::NotQueryable;