diff --git a/eng/devices/android.cake b/eng/devices/android.cake index 7974deb5577f..1739d123b4e3 100644 --- a/eng/devices/android.cake +++ b/eng/devices/android.cake @@ -11,7 +11,7 @@ const string dotnetVersion = "net7.0"; // required FilePath PROJECT = Argument("project", EnvironmentVariable("ANDROID_TEST_PROJECT") ?? ""); -string TEST_DEVICE = Argument("device", EnvironmentVariable("ANDROID_TEST_DEVICE") ?? $"android-emulator-32_{defaultVersion}"); +string TEST_DEVICE = Argument("device", EnvironmentVariable("ANDROID_TEST_DEVICE") ?? $"android-emulator-64_{defaultVersion}"); string DEVICE_NAME = Argument("skin", EnvironmentVariable("ANDROID_TEST_SKIN") ?? "Nexus 5X"); // optional @@ -82,25 +82,33 @@ Setup(context => if (parts[0] != "android") throw new Exception("Unexpected platform (expected: android) in device: " + TEST_DEVICE); // device/emulator + Information("Create for: {0}", parts[1]); if (parts[1] == "device") emulator = false; else if (parts[1] != "emulator" && parts[1] != "simulator") throw new Exception("Unexpected device type (expected: device|emulator) in device: " + TEST_DEVICE); // arch/bits + Information("Host OS System Arch: {0}", System.Runtime.InteropServices.RuntimeInformation.OSArchitecture); + Information("Host Processor System Arch: {0}", System.Runtime.InteropServices.RuntimeInformation.ProcessArchitecture); if (parts[2] == "32") { if (emulator) DEVICE_ARCH = "x86"; else DEVICE_ARCH = "armeabi-v7a"; } else if (parts[2] == "64") { - if (emulator) + if (System.Runtime.InteropServices.RuntimeInformation.OSArchitecture == System.Runtime.InteropServices.Architecture.Arm64) + DEVICE_ARCH = "arm64-v8a"; + else if (emulator) DEVICE_ARCH = "x86_64"; else DEVICE_ARCH = "arm64-v8a"; } - var sdk = api >= 24 ? "google_apis_playstore" : "google_apis"; + var sdk = api >= 28 ? "google_apis_playstore" : "google_apis"; + if (api == 27 && DEVICE_ARCH == "x86_64") + sdk = "default"; DEVICE_ID = $"system-images;android-{api};{sdk};{DEVICE_ARCH}"; + Information("Going to run image: {0}", DEVICE_ID); // we are not using a virtual device, so quit if (!emulator) return; diff --git a/eng/pipelines/common/device-tests.yml b/eng/pipelines/common/device-tests.yml index fc25c13df876..f403fed655cc 100644 --- a/eng/pipelines/common/device-tests.yml +++ b/eng/pipelines/common/device-tests.yml @@ -2,6 +2,7 @@ parameters: androidPool: { } iosPool: { } catalystPool: { } + windowsPool: { } androidApiLevels: [ 30 ] iosVersions: [ 'latest' ] catalystVersions: [ 'latest' ] @@ -36,13 +37,9 @@ stages: ${{ each api in parameters.androidApiLevels }}: ${{ if not(containsValue(project.androidApiLevelsExclude, api)) }}: ${{ replace(coalesce(project.desc, project.name), ' ', '_') }}_API_${{ api }}: - ${{ if ge(api, 24) }}: - ANDROID_EMULATORS: "system-images;android-${{ api }};google_apis_playstore;x86" - ${{ else }}: - ANDROID_EMULATORS: "system-images;android-${{ api }};google_apis;x86" REQUIRED_XCODE: $(DEVICETESTS_REQUIRED_XCODE) PROJECT_PATH: ${{ project.android }} - DEVICE: android-emulator-32_${{ api }} + DEVICE: android-emulator-64_${{ api }} steps: - template: device-tests-steps.yml parameters: @@ -139,8 +136,7 @@ stages: workspace: clean: all displayName: "Windows device tests" - pool: - vmImage: windows-latest + pool: ${{ parameters.windowsPool }} strategy: matrix: # create all the variables used for the matrix diff --git a/eng/pipelines/common/ui-tests.yml b/eng/pipelines/common/ui-tests.yml index 0a206145abd0..69b366535db1 100644 --- a/eng/pipelines/common/ui-tests.yml +++ b/eng/pipelines/common/ui-tests.yml @@ -40,10 +40,6 @@ stages: displayName: ${{ coalesce(project.desc, project.name) }} (API ${{ api }}) pool: ${{ parameters.androidPool }} variables: - ${{ if ge(api, 24) }}: - ANDROID_EMULATORS: "system-images;android-${{ api }};google_apis_playstore;x86" - ${{ if lt(api, 24) }}: - ANDROID_EMULATORS: "system-images;android-${{ api }};google_apis;x86" REQUIRED_XCODE: $(DEVICETESTS_REQUIRED_XCODE) steps: - template: ui-tests-steps.yml @@ -52,7 +48,7 @@ stages: version: ${{ api }} path: ${{ project.android }} app: ${{ project.app }} - device: android-emulator-32_${{ api }} + device: android-emulator-64_${{ api }} provisionatorChannel: ${{ parameters.provisionatorChannel }} agentPoolAccessToken: ${{ parameters.agentPoolAccessToken }} @@ -153,10 +149,6 @@ stages: displayName: ${{ coalesce(project.desc, project.name) }} (API ${{ api }}) pool: ${{ parameters.androidCompatibilityPool }} variables: - ${{ if ge(api, 24) }}: - ANDROID_EMULATORS: "system-images;android-${{ api }};google_apis_playstore;x86" - ${{ if lt(api, 24) }}: - ANDROID_EMULATORS: "system-images;android-${{ api }};google_apis;x86" REQUIRED_XCODE: $(DEVICETESTS_REQUIRED_XCODE) steps: - template: ui-tests-compatibility-steps.yml @@ -168,7 +160,7 @@ stages: path: ${{ project.compatibilityAndroidTestProject }} app: ${{ project.compatibilityAndroidApp }} targetSample: "dotnet-legacy-controlgallery-android" - device: android-emulator-32_${{ api }} + device: android-emulator-64_${{ api }} provisionatorChannel: ${{ parameters.provisionatorChannel }} agentPoolAccessToken: ${{ parameters.agentPoolAccessToken }} diff --git a/eng/pipelines/device-tests.yml b/eng/pipelines/device-tests.yml index fc319ec92fd6..1d6cc7e4a3c9 100644 --- a/eng/pipelines/device-tests.yml +++ b/eng/pipelines/device-tests.yml @@ -56,6 +56,7 @@ parameters: - name: BuildEverything type: boolean default: false + - name: androidPool type: object default: @@ -63,18 +64,25 @@ parameters: vmImage: $(androidTestsVmImage) demands: - macOS.Name -equals Ventura - - macOS.Architecture -equals x64 + - name: iosPool type: object default: name: $(iosTestsVmPool) vmImage: $(iosTestsVmImage) + - name: catalystPool type: object default: name: $(iosTestsVmPool) vmImage: $(iosTestsVmImage) + - name: windowsPool + type: object + default: + name: $(windowsTestsVmPool) + vmImage: $(windowsTestsVmImage) + resources: repositories: - repository: yaml-templates @@ -90,6 +98,7 @@ stages: androidPool: ${{ parameters.androidPool }} iosPool: ${{ parameters.iosPool }} catalystPool: ${{ parameters.catalystPool }} + windowsPool: ${{ parameters.windowsPool }} agentPoolAccessToken: $(AgentPoolAccessToken) ${{ if or(parameters.BuildEverything, and(ne(variables['Build.Reason'], 'PullRequest'), eq(variables['System.TeamProject'], 'devdiv'))) }}: androidApiLevels: [ 30, 29, 28, 27, 26, 25, 24, 23 ] diff --git a/eng/pipelines/ui-tests.yml b/eng/pipelines/ui-tests.yml index 1268d194e616..19cb17ae9155 100644 --- a/eng/pipelines/ui-tests.yml +++ b/eng/pipelines/ui-tests.yml @@ -68,7 +68,6 @@ parameters: vmImage: $(androidTestsVmImage) demands: - macOS.Name -equals Ventura - - macOS.Architecture -equals x64 - name: iosPool type: object @@ -77,7 +76,6 @@ parameters: vmImage: $(androidTestsVmImage) demands: - macOS.Name -equals Ventura - - macOS.Architecture -equals x64 - name: windowsPool type: object @@ -98,7 +96,6 @@ parameters: vmImage: $(androidTestsVmImage) demands: - macOS.Name -equals Ventura - - macOS.Architecture -equals x64 - name: iosCompatibilityPool type: object @@ -107,7 +104,6 @@ parameters: vmImage: $(androidTestsVmImage) demands: - macOS.Name -equals Ventura - - macOS.Architecture -equals x64 resources: diff --git a/eng/provisioning/provisioning.csx b/eng/provisioning/provisioning.csx index ace0e2e675d0..b455fd3238bb 100644 --- a/eng/provisioning/provisioning.csx +++ b/eng/provisioning/provisioning.csx @@ -24,55 +24,36 @@ if(String.IsNullOrWhiteSpace(ANDROID_API_SDKS)) .ApiLevel((AndroidApiLevel)31) .ApiLevel((AndroidApiLevel)32) .ApiLevel((AndroidApiLevel)33) - .VirtualDevice( - "Android_API23", - (AndroidApiLevel)23, - AndroidSystemImageApi.Google, - AndroidSystemImageAbi.x86, - AndroidVirtualDevice.NEXUS_5X) - .VirtualDevice( - "Android_API24", - AndroidApiLevel.Nougat, - AndroidSystemImageApi.GooglePlayStore, - AndroidSystemImageAbi.x86, - AndroidVirtualDevice.NEXUS_5X) - .VirtualDevice( - "Android_API25", - AndroidApiLevel.Nougat_7_1, - AndroidSystemImageApi.GooglePlayStore, - AndroidSystemImageAbi.x86, - AndroidVirtualDevice.NEXUS_5X) - .VirtualDevice( - "Android_API26", - AndroidApiLevel.Oreo, - AndroidSystemImageApi.GooglePlayStore, - AndroidSystemImageAbi.x86, - AndroidVirtualDevice.NEXUS_5X) - .VirtualDevice( - "Android_API27", - AndroidApiLevel.Oreo_8_1 , - AndroidSystemImageApi.GooglePlayStore, - AndroidSystemImageAbi.x86, - AndroidVirtualDevice.NEXUS_5X) - .VirtualDevice( - "Android_API28", - AndroidApiLevel.P, - AndroidSystemImageApi.GooglePlayStore, - AndroidSystemImageAbi.x86, - AndroidVirtualDevice.NEXUS_5X) - .VirtualDevice( - "Android_API29", - AndroidApiLevel.Q, - AndroidSystemImageApi.GooglePlayStore, - AndroidSystemImageAbi.x86, - AndroidVirtualDevice.NEXUS_5X) - .VirtualDevice( - "Android_API30", - AndroidApiLevel.R, - AndroidSystemImageApi.GooglePlayStore, - AndroidSystemImageAbi.x86, - AndroidVirtualDevice.NEXUS_5X) - .SdkManagerPackage ("build-tools;33.0.0"); + .VirtualDevice("Android_x64_API23", (AndroidApiLevel)23, AndroidSystemImageApi.Google, AndroidSystemImageAbi.x86_64, AndroidVirtualDevice.NEXUS_5X) + .VirtualDevice("Android_x64_API24", (AndroidApiLevel)24, AndroidSystemImageApi.Google, AndroidSystemImageAbi.x86_64, AndroidVirtualDevice.NEXUS_5X) + .VirtualDevice("Android_x64_API25", (AndroidApiLevel)25, AndroidSystemImageApi.Google, AndroidSystemImageAbi.x86_64, AndroidVirtualDevice.NEXUS_5X) + .VirtualDevice("Android_x64_API26", (AndroidApiLevel)26, AndroidSystemImageApi.Google, AndroidSystemImageAbi.x86_64, AndroidVirtualDevice.NEXUS_5X) + .VirtualDevice("Android_x64_API27", (AndroidApiLevel)27, AndroidSystemImageApi.Default, /*!!*/ AndroidSystemImageAbi.x86_64, AndroidVirtualDevice.NEXUS_5X) + .VirtualDevice("Android_x64_API28", (AndroidApiLevel)28, AndroidSystemImageApi.GooglePlayStore, AndroidSystemImageAbi.x86_64, AndroidVirtualDevice.NEXUS_5X) + .VirtualDevice("Android_x64_API29", (AndroidApiLevel)29, AndroidSystemImageApi.GooglePlayStore, AndroidSystemImageAbi.x86_64, AndroidVirtualDevice.NEXUS_5X) + .VirtualDevice("Android_x64_API30", (AndroidApiLevel)30, AndroidSystemImageApi.GooglePlayStore, AndroidSystemImageAbi.x86_64, AndroidVirtualDevice.NEXUS_5X) + .VirtualDevice("Android_x64_API31", (AndroidApiLevel)31, AndroidSystemImageApi.GooglePlayStore, AndroidSystemImageAbi.x86_64, AndroidVirtualDevice.NEXUS_5X) + .VirtualDevice("Android_x64_API32", (AndroidApiLevel)32, AndroidSystemImageApi.GooglePlayStore, AndroidSystemImageAbi.x86_64, AndroidVirtualDevice.NEXUS_5X) + .VirtualDevice("Android_x64_API33", (AndroidApiLevel)33, AndroidSystemImageApi.GooglePlayStore, AndroidSystemImageAbi.x86_64, AndroidVirtualDevice.NEXUS_5X); + + + if (IsArm64) + { + AndroidSdk() + .VirtualDevice("Android_arm64_API23", (AndroidApiLevel)23, AndroidSystemImageApi.Google, AndroidSystemImageAbi.ARM64_v8a, AndroidVirtualDevice.NEXUS_5X) + .VirtualDevice("Android_arm64_API24", (AndroidApiLevel)24, AndroidSystemImageApi.Google, AndroidSystemImageAbi.ARM64_v8a, AndroidVirtualDevice.NEXUS_5X) + .VirtualDevice("Android_arm64_API25", (AndroidApiLevel)25, AndroidSystemImageApi.Google, AndroidSystemImageAbi.ARM64_v8a, AndroidVirtualDevice.NEXUS_5X) + .VirtualDevice("Android_arm64_API26", (AndroidApiLevel)26, AndroidSystemImageApi.Google, AndroidSystemImageAbi.ARM64_v8a, AndroidVirtualDevice.NEXUS_5X) + .VirtualDevice("Android_arm64_API27", (AndroidApiLevel)27, AndroidSystemImageApi.Google, AndroidSystemImageAbi.ARM64_v8a, AndroidVirtualDevice.NEXUS_5X) + .VirtualDevice("Android_arm64_API28", (AndroidApiLevel)28, AndroidSystemImageApi.GooglePlayStore, AndroidSystemImageAbi.ARM64_v8a, AndroidVirtualDevice.NEXUS_5X) + .VirtualDevice("Android_arm64_API29", (AndroidApiLevel)29, AndroidSystemImageApi.GooglePlayStore, AndroidSystemImageAbi.ARM64_v8a, AndroidVirtualDevice.NEXUS_5X) + .VirtualDevice("Android_arm64_API30", (AndroidApiLevel)30, AndroidSystemImageApi.GooglePlayStore, AndroidSystemImageAbi.ARM64_v8a, AndroidVirtualDevice.NEXUS_5X) + .VirtualDevice("Android_arm64_API31", (AndroidApiLevel)31, AndroidSystemImageApi.GooglePlayStore, AndroidSystemImageAbi.ARM64_v8a, AndroidVirtualDevice.NEXUS_5X) + .VirtualDevice("Android_arm64_API32", (AndroidApiLevel)32, AndroidSystemImageApi.GooglePlayStore, AndroidSystemImageAbi.ARM64_v8a, AndroidVirtualDevice.NEXUS_5X) + .VirtualDevice("Android_arm64_API33", (AndroidApiLevel)33, AndroidSystemImageApi.GooglePlayStore, AndroidSystemImageAbi.ARM64_v8a, AndroidVirtualDevice.NEXUS_5X); + } + + AndroidSdk().SdkManagerPackage ("build-tools;33.0.0"); } else {