protected override Task <ExitCode> InvokeInternal(ILogger logger) { logger.LogDebug($"Android Uninstall command called: App = {_arguments.PackageName}{Environment.NewLine}"); // Package Name is not guaranteed to match file name, so it needs to be mandatory. string apkPackageName = _arguments.PackageName; var runner = new AdbRunner(logger); try { using (logger.BeginScope("Find device where to uninstall APK")) { // Make sure the adb server is started runner.StartAdbServer(); var deviceId = _arguments.DeviceId; if (string.IsNullOrEmpty(deviceId)) { // trying to find out if there is only one device with the app installed deviceId = runner.GetUniqueDeviceToUse(logger, "package:" + apkPackageName, "app"); if (string.IsNullOrEmpty(deviceId)) { return(Task.FromResult(ExitCode.ADB_DEVICE_ENUMERATION_FAILURE)); } } runner.SetActiveDevice(deviceId); logger.LogDebug($"Working with {runner.GetAdbVersion()}"); runner.UninstallApk(apkPackageName); return(Task.FromResult(ExitCode.SUCCESS)); } } catch (Exception toLog) { logger.LogCritical(toLog, $"Failure to uninstall test package: {toLog.Message}"); } return(Task.FromResult(ExitCode.GENERAL_FAILURE)); }