Add sperate retry for permission checks

Change-Id: Ibbce02fa14a003f80a2de10ebe5e4e756168c2d5
This commit is contained in:
Tristan Ritchie
2024-01-10 16:44:16 +00:00
committed by Baldur Karlsson
parent 7a22f9579d
commit d8a0b1c6d3
+17 -13
View File
@@ -525,23 +525,14 @@ RDResult InstallRenderDocServer(const rdcstr &deviceID)
RDCLOG("Installed package '%s', checking for success...", apk.c_str());
bool retryNeeded;
AndroidVersionCheckResult versionCheck = CheckAndroidServerVersion(deviceID, abi);
retryNeeded = (versionCheck != AndroidVersionCheckResult::Correct);
if(!retryNeeded)
{
AndroidInstallPermissionCheckResult permissionsCheck =
CheckAndroidServerInstallPermissions(deviceID, GetRenderDocPackageForABI(abi), apiVersion);
retryNeeded = (permissionsCheck != AndroidInstallPermissionCheckResult::Correct);
}
if(retryNeeded)
if(versionCheck != AndroidVersionCheckResult::Correct)
{
RDCLOG("Failed to install APK. stdout: %s, stderr: %s",
adbInstall.strStdout.trimmed().c_str(), adbInstall.strStderror.trimmed().c_str());
RDCLOG("Retrying...");
InstallAPK(deviceID, apk, apiVersion);
adbExecCommand(deviceID, "install -r \"" + apk + "\"");
versionCheck = CheckAndroidServerVersion(deviceID, abi);
@@ -570,13 +561,26 @@ RDResult InstallRenderDocServer(const rdcstr &deviceID)
// verify the install properly.
result = ResultCode::AndroidAPKVerifyFailed;
}
}
// Only verify permissions if we are otherwise happy with the installation
if(result != ResultCode::AndroidAPKVerifyFailed)
{
AndroidInstallPermissionCheckResult permissionsCheck =
CheckAndroidServerInstallPermissions(deviceID, GetRenderDocPackageForABI(abi), apiVersion);
if(permissionsCheck != AndroidInstallPermissionCheckResult::Correct)
{
RDCWARN("Failed to verify APK installation permissions after retry.");
result = ResultCode::AndroidAPKVerifyFailed;
RDCWARN("Failed to verify APK installation permissions. Retrying...");
// Some devices will only grant permissions with a second installation attempt
InstallAPK(deviceID, apk, apiVersion);
// Check permission and version again - version was correct last time so should ok here
if((CheckAndroidServerVersion(deviceID, abi) != AndroidVersionCheckResult::Correct) ||
(CheckAndroidServerInstallPermissions(deviceID, GetRenderDocPackageForABI(abi), apiVersion) !=
AndroidInstallPermissionCheckResult::Correct))
{
RDCWARN("Failed to verify APK installation");
result = ResultCode::AndroidAPKVerifyFailed;
}
}
}
}