diff --git a/build-tools/automation/MauiR2RHelix.proj b/build-tools/automation/MauiR2RHelix.proj
index 6abba14c266..0d8f7b74df5 100644
--- a/build-tools/automation/MauiR2RHelix.proj
+++ b/build-tools/automation/MauiR2RHelix.proj
@@ -4,6 +4,7 @@
true
false
true
+ true
tests/android/maui-r2r/
WorkItem
$(HelixWorkItemName)
@@ -18,10 +19,53 @@
-
- $(WorkItemDirectory)
- $(WorkItemCommand)
- $(WorkItemTimeout)
-
+
+ $(WorkItemApk)
+ $(AndroidPackageName)
+ $(WorkItemTimeout)
+
+
diff --git a/build-tools/automation/yaml-templates/run-maui-r2r-helix-matrix.yaml b/build-tools/automation/yaml-templates/run-maui-r2r-helix-matrix.yaml
index db39c7c841c..f2b02787453 100644
--- a/build-tools/automation/yaml-templates/run-maui-r2r-helix-matrix.yaml
+++ b/build-tools/automation/yaml-templates/run-maui-r2r-helix-matrix.yaml
@@ -159,6 +159,9 @@ steps:
$packageName = '${{ testCase.packageName }}'
$apkName = "MauiR2R-${{ testCase.name }}-Signed.apk"
+ if (Test-Path $payloadDirectory) {
+ Remove-Item -LiteralPath $payloadDirectory -Recurse -Force
+ }
New-Item -ItemType Directory -Force -Path $payloadDirectory | Out-Null
$apk = Get-ChildItem $projectDirectory -Recurse -Filter '*-Signed.apk' |
Where-Object { $_.FullName -like "*\bin\Release\*$runtimeIdentifier*" } |
@@ -169,67 +172,6 @@ steps:
}
Copy-Item -LiteralPath $apk.FullName -Destination (Join-Path $payloadDirectory $apkName) -Force
-
- $sdkCandidates = @(
- $env:ANDROID_HOME,
- $env:ANDROID_SDK_ROOT,
- $env:AndroidSdkDirectory,
- $(if ($env:USERPROFILE) { Join-Path $env:USERPROFILE 'android-toolchain\sdk' }),
- $(if ($env:HOME) { Join-Path $env:HOME 'android-toolchain\sdk' })
- ) | Where-Object { $_ -and (Test-Path (Join-Path $_ 'platform-tools\adb.exe')) }
- $androidSdk = $sdkCandidates | Select-Object -First 1
- if (-not $androidSdk) {
- throw "Could not find Android SDK platform-tools. Tried ANDROID_HOME, ANDROID_SDK_ROOT, AndroidSdkDirectory, and user android-toolchain paths."
- }
-
- $platformTools = Join-Path $androidSdk 'platform-tools'
- $payloadPlatformTools = Join-Path $payloadDirectory 'platform-tools'
- New-Item -ItemType Directory -Force -Path $payloadPlatformTools | Out-Null
- Copy-Item -Path (Join-Path $platformTools '*') -Destination $payloadPlatformTools -Recurse -Force
-
- $script = @"
- @echo on
- setlocal
- set "UPLOAD_DIR=%HELIX_WORKITEM_UPLOAD_ROOT%"
- if "%UPLOAD_DIR%"=="" set "UPLOAD_DIR=%~dp0"
- if not exist "%UPLOAD_DIR%" mkdir "%UPLOAD_DIR%"
- echo Scenario: ${{ testCase.displayName }} > "%UPLOAD_DIR%\scenario-${{ testCase.name }}.txt"
- echo RuntimeIdentifier: $runtimeIdentifier >> "%UPLOAD_DIR%\scenario-${{ testCase.name }}.txt"
- echo PackageName: $packageName >> "%UPLOAD_DIR%\scenario-${{ testCase.name }}.txt"
- echo APK: $apkName >> "%UPLOAD_DIR%\scenario-${{ testCase.name }}.txt"
- set "ADB=%~dp0platform-tools\adb.exe"
- if not exist "%ADB%" (
- echo Could not find payload adb.exe at "%ADB%"
- dir "%~dp0" /s
- exit /b 1
- )
- "%ADB%" version || exit /b 1
- "%ADB%" devices -l > "%UPLOAD_DIR%\adb-devices-${{ testCase.name }}.log"
- type "%UPLOAD_DIR%\adb-devices-${{ testCase.name }}.log"
- "%ADB%" wait-for-device || exit /b 1
- "%ADB%" shell getprop > "%UPLOAD_DIR%\getprop-${{ testCase.name }}.log"
- "%ADB%" shell getprop ro.product.cpu.abi
- "%ADB%" shell getprop ro.product.cpu.abilist
- "%ADB%" shell getprop ro.build.fingerprint
- "%ADB%" uninstall $packageName
- "%ADB%" install -r "%~dp0$apkName" || exit /b 1
- "%ADB%" shell pm path $packageName > "%UPLOAD_DIR%\pm-path-${{ testCase.name }}.log"
- "%ADB%" shell dumpsys package $packageName > "%UPLOAD_DIR%\dumpsys-package-${{ testCase.name }}.log"
- "%ADB%" shell logcat -c
- "%ADB%" shell monkey -p $packageName -c android.intent.category.LAUNCHER 1 || exit /b 1
- ping -n 11 127.0.0.1 > nul
- "%ADB%" shell pidof $packageName
- if errorlevel 1 (
- "%ADB%" logcat -d -b all > "%UPLOAD_DIR%\logcat-${{ testCase.name }}.log"
- "%ADB%" uninstall $packageName
- exit /b 1
- )
- "%ADB%" logcat -d -b all > "%UPLOAD_DIR%\logcat-${{ testCase.name }}.log"
- "%ADB%" uninstall $packageName
- exit /b 0
- "@
-
- Set-Content -LiteralPath (Join-Path $payloadDirectory 'run-maui-r2r.cmd') -Value $script -Encoding ASCII
displayName: Prepare MAUI R2R Helix payload - ${{ testCase.displayName }}
- template: /build-tools/automation/yaml-templates/run-dotnet-preview.yaml
@@ -290,6 +232,7 @@ steps:
$binlogPath = Join-Path $logsDirectory "SendMauiR2R-$($case.name)ToHelix.binlog"
$helixResultsDestinationDir = Join-Path (Join-Path $logsDirectory 'helix-results') $case.name
$workItemDirectory = Join-Path $payloadRootDirectory $case.name
+ $workItemApk = Join-Path $workItemDirectory "MauiR2R-$($case.name)-Signed.apk"
Remove-Item -LiteralPath $scriptPath, $outputPath, $errorPath -Force -ErrorAction Ignore
@@ -307,9 +250,9 @@ steps:
"`$env:HelixWorkItemName = '$($case.workItemName)'"
"`$env:HelixResultsDestinationDir = '$helixResultsDestinationDir'"
"`$env:HelixAccessToken = ''"
- "`$env:WorkItemDirectory = '$workItemDirectory'"
- "`$env:WorkItemCommand = 'run-maui-r2r.cmd'"
- "`$env:WorkItemTimeout = '00:10:00'"
+ "`$env:WorkItemApk = '$workItemApk'"
+ "`$env:AndroidPackageName = '$($case.packageName)'"
+ "`$env:WorkItemTimeout = '00:20:00'"
"`$env:WaitForWorkItemCompletion = 'true'"
"`$env:Creator = 'dotnet-android'"
"& '$dotnetPath' msbuild '$helixProject' /p:TreatWarningsAsErrors=false /t:Test /bl:'$binlogPath'"
diff --git a/eng/Versions.props b/eng/Versions.props
index 65909046e90..44395a2452e 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -9,6 +9,7 @@
11.0.0-beta.26060.102
11.0.0-beta.26452.117
+ 11.0.0-prerelease.26428.1
11.0.100-preview.4.26215.121
11.0.100-preview.4.26215.121
$(MicrosoftNETWorkloadMonoToolChainCurrentManifest110100preview4PackageVersion)