Skip to content

Commit d365a3b

Browse files
authored
[build-tools] Bump Test emulator to use API-31 (#5257)
We need to be able to test our build system against newer emulators. Include both API-30 and API-31 -based emulator images into our nightly test pipeline `azure-pipelines-nightly.yaml`. We will leave the normal CI tests running on API-29 for now as the newer emulators seem to be reliable in a CI environment. One of the changes is in the use of `Context.GetExternalFilesDir(null)` to create a subdirectory within the external files directory. This is due to [permissions changes which came into effect in API-30][0]: > **Note**: On Android 11 (API level 30) and higher, apps cannot > create their own app-specific directory on external storage. As a result our previous code can no longer be used on newer devices. We shall instead unify the tests to all use `Context.GetExternalFilesDir(null)`, then use `Context.FilesDir.AbsolutePath` as a backup. The result of this change is we MUST use the `run-as` command to retrieve the test log file for processing on API-30. This is because the external directory is no longer readable globally on API-30; it is only readable for the app. As a result we also need to make the API-30 build of the test app "debuggable" via `[Application (Debuggable=true)]`. Thankfully this change was reverted somewhat in API-31, so we can still `adb pull` from the directory returned by `Context.GetExternalFilesDir(null);`. Other changes include updating tests to include the `x86_64` abi. This is because the newer x86_64 emulators no longer appear to be able to run `x86` code. [0]: https://developer.android.com/training/data-storage/app-specific#external-access-files
1 parent b3cb3a9 commit d365a3b

File tree

36 files changed

+349
-217
lines changed

36 files changed

+349
-217
lines changed

Configuration.props

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -184,8 +184,9 @@
184184
<CommandLineToolsFolder Condition=" '$(CommandLineToolsFolder)' == '' ">5.0</CommandLineToolsFolder>
185185
<CommandLineToolsVersion Condition=" '$(CommandLineToolsVersion)' == '' ">7583922_latest</CommandLineToolsVersion>
186186
<CommandLineToolsBinPath Condition=" '$(CommandLineToolsBinPath)' == '' ">$(AndroidSdkFullPath)\cmdline-tools\$(CommandLineToolsFolder)\bin</CommandLineToolsBinPath>
187-
<EmulatorVersion Condition=" '$(EmulatorVersion)' == '' ">7033400</EmulatorVersion>
188-
<EmulatorPkgRevision Condition=" '$(EmulatorPkgRevision)' == '' ">30.3.5</EmulatorPkgRevision>
187+
<!-- Version numbers and PkgVersion are found in https://dl-ssl.google.com/android/repository/repository2-1.xml -->
188+
<EmulatorVersion Condition=" '$(EmulatorVersion)' == '' ">8129060</EmulatorVersion>
189+
<EmulatorPkgRevision Condition=" '$(EmulatorPkgRevision)' == '' ">31.3.1</EmulatorPkgRevision>
189190
<EmulatorToolPath Condition=" '$(EmulatorToolPath)' == '' ">$(AndroidSdkFullPath)\emulator</EmulatorToolPath>
190191
<EmulatorToolExe Condition=" '$(EmulatorToolExe)' == '' ">emulator</EmulatorToolExe>
191192
<NdkBuildPath Condition=" '$(NdkBuildPath)' == '' And '$(HostOS)' != 'Windows' ">$(AndroidNdkDirectory)\ndk-build</NdkBuildPath>
@@ -242,12 +243,12 @@
242243

243244
<!-- Fix for IDEs -->
244245
<Target Name="CreateManifestResourceNames" />
245-
246+
246247
<!-- Don't analyze code from external repos -->
247248
<PropertyGroup Condition=" !$(MSBuildProjectDirectory.Contains ('external')) and !$(MSBuildProjectDirectory.Contains ('NUnitLite')) ">
248249
<XAShouldAnalyzeAssembly>True</XAShouldAnalyzeAssembly>
249250
</PropertyGroup>
250-
251+
251252
<!-- The net6.0 versions of these analyzers are stricter and require overloads not available in .NET Framework, so start with just .NET Framework -->
252253
<PropertyGroup Condition=" '$(TargetFramework)' != '' And (!$(TargetFramework.StartsWith('nets')) And !$(TargetFramework.StartsWith('net4')) And !$(TargetFramework.StartsWith('monoandroid'))) ">
253254
<XABuildingForNetCoreApp>True</XABuildingForNetCoreApp>

build-tools/Xamarin.Android.Tools.BootstrapTasks/Xamarin.Android.Tools.BootstrapTasks/CreateAndroidEmulator.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ public class CreateAndroidEmulator : ToolTask
2424

2525
public string ImageName {get; set;} = "XamarinAndroidTestRunner64";
2626
public string DeviceName {get; set;} = "pixel_4";
27+
public string ImageType {get; set;} = "default";
2728

2829
public string DataPartitionSizeMB {get; set;} = "2048";
2930
public string RamSizeMB {get; set;} = "2048";
@@ -32,6 +33,9 @@ public class CreateAndroidEmulator : ToolTask
3233

3334
public override bool Execute ()
3435
{
36+
if (string.IsNullOrEmpty (ToolExe))
37+
ToolExe = "avdmanager";
38+
3539
var dirs = string.IsNullOrEmpty (ToolPath)
3640
? null
3741
: new [] { ToolPath };
@@ -43,7 +47,7 @@ public override bool Execute ()
4347
ToolExe = filename;
4448

4549
if (string.IsNullOrEmpty (TargetId) && !string.IsNullOrEmpty (SdkVersion)) {
46-
TargetId = "system-images;android-" + SdkVersion + ";default;" + AndroidAbi;
50+
TargetId = $"system-images;android-{SdkVersion};{ImageType};{AndroidAbi}";
4751
}
4852

4953
var env = new List<string> ();

build-tools/Xamarin.Android.Tools.BootstrapTasks/Xamarin.Android.Tools.BootstrapTasks/RunInstrumentationTests.cs

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ public class RunInstrumentationTests : Adb
1919
const int StateGetLogcat = 1;
2020
const int StateClearLogcat = 2;
2121
const int StatePullFiles = 3;
22-
const int MaxState = StatePullFiles;
22+
const int StateRunAsCatFiles = 4;
23+
const int MaxState = StateRunAsCatFiles;
2324

2425
public string TestFixture { get; set; }
2526

@@ -41,6 +42,8 @@ public class RunInstrumentationTests : Adb
4142

4243
public string LogLevel { get; set; }
4344

45+
public int ApiLevel { get; set; }
46+
4447
int currentState = -1;
4548
int instrumentationExitCode = 99;
4649
string targetTestResultsPath;
@@ -98,10 +101,17 @@ public override bool Execute ()
98101
ArgumentsString = $"{AdbTarget} {AdbOptions} logcat -c",
99102
IgnoreExitCode = true,
100103
},
101-
102104
new CommandInfo {
103105
ArgumentsGenerator = () => $"{AdbTarget} {AdbOptions} pull \"{targetTestResultsPath}\" \"{NUnit2TestResultsFile}\"",
104-
ShouldRun = () => !String.IsNullOrEmpty (targetTestResultsPath)
106+
ShouldRun = () => !String.IsNullOrEmpty (targetTestResultsPath) && ApiLevel != 30,
107+
IgnoreExitCode = true,
108+
},
109+
new CommandInfo {
110+
ArgumentsGenerator = () => $"{AdbTarget} {AdbOptions} shell run-as {PackageName} cat \"{targetTestResultsPath}\"",
111+
ShouldRun = () => !String.IsNullOrEmpty (targetTestResultsPath) && ApiLevel == 30,
112+
StdoutFilePath = NUnit2TestResultsFile,
113+
StdoutAppend = false,
114+
IgnoreExitCode = true,
105115
},
106116
};
107117
}

build-tools/Xamarin.Android.Tools.BootstrapTasks/Xamarin.Android.Tools.BootstrapTasks/StartAndroidEmulator.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ public class StartAndroidEmulator : Task
3434
public string ToolPath {get; set;}
3535
public string ToolExe {get; set;}
3636
public string LogcatFile {get; set;}
37+
public bool ShowWindow {get; set;} = true;
3738

3839
public override bool Execute ()
3940
{
@@ -69,7 +70,8 @@ void Run (string emulator)
6970
return;
7071

7172
var port = string.IsNullOrEmpty (Port) ? "" : $" -port {Port}";
72-
var arguments = $"{Arguments ?? string.Empty} -verbose -logcat-output \"{LogcatFile}\" -no-boot-anim -no-audio -no-snapshot -cache-size 512 -timezone \"Etc/UTC\" -avd {ImageName}{port}";
73+
var showWindow = ShowWindow ? "" : " -no-window";
74+
var arguments = $"{Arguments ?? string.Empty} -verbose -detect-image-hang -logcat-output \"{LogcatFile}\" -no-boot-anim -no-audio -no-snapshot -cache-size 512 -timezone \"Etc/UTC\" {showWindow}{port} -avd {ImageName}";
7375
Log.LogMessage (MessageImportance.Low, $"Tool {emulator} execution started with arguments: {arguments}");
7476
var psi = new ProcessStartInfo () {
7577
FileName = emulator,

build-tools/automation/azure-pipelines-nightly.yaml

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -74,18 +74,31 @@ stages:
7474
Android21-x86:
7575
avdApiLevel: 21
7676
avdAbi: x86
77+
avdType: default
7778
Android23-x86:
7879
avdApiLevel: 23
7980
avdAbi: x86
81+
avdType: default
8082
Android24-x86:
8183
avdApiLevel: 24
8284
avdAbi: x86
85+
avdType: default
8386
Android26-x86_64:
8487
avdApiLevel: 26
8588
avdAbi: x86_64
89+
avdType: default
8690
Android28-x86_64:
8791
avdApiLevel: 28
8892
avdAbi: x86_64
93+
avdType: default
94+
Android30-x86_64:
95+
avdApiLevel: 30
96+
avdAbi: x86_64
97+
avdType: default
98+
Android31-x86_64:
99+
avdApiLevel: 31
100+
avdAbi: x86_64
101+
avdType: default
89102
pool:
90103
vmImage: $(HostedMacImage)
91104
workspace:
@@ -113,15 +126,15 @@ stages:
113126
inputs:
114127
solution: tests/Mono.Android-Tests/Mono.Android-Tests.csproj
115128
configuration: $(XA.Build.Configuration)
116-
msbuildArguments: /t:InstallAvdImage;AcquireAndroidTarget /p:TestAvdApiLevel=$(avdApiLevel) /p:TestAvdAbi=$(avdAbi) /bl:$(System.DefaultWorkingDirectory)/bin/Test$(XA.Build.Configuration)/install-emulator-$(avdApiLevel).binlog
129+
msbuildArguments: /t:InstallAvdImage;AcquireAndroidTarget /p:TestAvdApiLevel=$(avdApiLevel) /p:TestAvdAbi=$(avdAbi) /p:TestAvdType=$(avdType) /bl:$(System.DefaultWorkingDirectory)/bin/Test$(XA.Build.Configuration)/install-emulator-$(avdApiLevel).binlog
117130

118131
- template: yaml-templates/apk-instrumentation.yaml
119132
parameters:
120133
configuration: $(XA.Build.Configuration)
121-
testName: Mono.Android_Tests-$(avdApiLevel)-$(avdAbi)
134+
testName: Mono.Android_Tests-$(avdApiLevel)-$(avdAbi)-$(avdType)
122135
project: tests/Mono.Android-Tests/Mono.Android-Tests.csproj
123136
testResultsFiles: TestResult-Mono.Android_Tests-$(XA.Build.Configuration).xml
124-
extraBuildArgs: /p:TestAvdApiLevel=$(avdApiLevel) /p:TestAvdAbi=$(avdAbi)
137+
extraBuildArgs: /p:TestAvdApiLevel=$(avdApiLevel) /p:TestAvdAbi=$(avdAbi) /p:TestAvdType=$(avdType)
125138
artifactSource: bin/Test$(XA.Build.Configuration)/Mono.Android_Tests-Signed.apk
126139
artifactFolder: Default
127140

@@ -130,13 +143,13 @@ stages:
130143
inputs:
131144
solution: tests/Mono.Android-Tests/Mono.Android-Tests.csproj
132145
configuration: $(XA.Build.Configuration)
133-
msbuildArguments: /t:AcquireAndroidTarget,ReleaseAndroidTarget /p:TestAvdApiLevel=$(avdApiLevel) /p:TestAvdAbi=$(avdAbi) /bl:$(System.DefaultWorkingDirectory)/bin/Test$(XA.Build.Configuration)/shutdown-emulator.binlog
146+
msbuildArguments: /t:AcquireAndroidTarget,ReleaseAndroidTarget /p:TestAvdApiLevel=$(avdApiLevel) /p:TestAvdAbi=$(avdAbi) /p:TestAvdType=$(avdType) /bl:$(System.DefaultWorkingDirectory)/bin/Test$(XA.Build.Configuration)/shutdown-emulator.binlog
134147
condition: always()
135148

136149
- template: yaml-templates/upload-results.yaml
137150
parameters:
138151
configuration: $(XA.Build.Configuration)
139-
artifactName: Test Results - Emulator $(avdApiLevel)-$(avdAbi) - macOS
152+
artifactName: Test Results - Emulator $(avdApiLevel)-$(avdAbi)-$(avdType) - macOS
140153

141154
- template: yaml-templates/fail-on-issue.yaml
142155

build-tools/automation/azure-pipelines.yaml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -996,20 +996,32 @@ stages:
996996
node_id: 1
997997
job_name: mac_msbuilddevice_tests_1
998998
job_suffix: Legacy
999+
nunit_categories: '&& cat != Debugger'
9991000
provisionatorChannel: ${{ parameters.provisionatorChannel }}
10001001

10011002
- template: yaml-templates/run-msbuild-device-tests.yaml
10021003
parameters:
10031004
node_id: 2
10041005
job_name: mac_msbuilddevice_tests_2
10051006
job_suffix: Legacy
1007+
nunit_categories: '&& cat != Debugger'
10061008
provisionatorChannel: ${{ parameters.provisionatorChannel }}
10071009

10081010
- template: yaml-templates/run-msbuild-device-tests.yaml
10091011
parameters:
10101012
node_id: 3
10111013
job_name: mac_msbuilddevice_tests_3
10121014
job_suffix: Legacy
1015+
nunit_categories: '&& cat != Debugger'
1016+
provisionatorChannel: ${{ parameters.provisionatorChannel }}
1017+
1018+
- template: yaml-templates/run-msbuild-device-tests.yaml
1019+
parameters:
1020+
node_id: 4
1021+
job_name: mac_msbuilddevice_tests_with_debugger
1022+
job_suffix: Legacy
1023+
jdkTestFolder: $(XA.Jdk11.Folder)
1024+
nunit_categories: '&& cat == Debugger'
10131025
provisionatorChannel: ${{ parameters.provisionatorChannel }}
10141026

10151027
# Check - "Xamarin.Android (MSBuild Emulator Tests macOS - One .NET)"
@@ -1040,6 +1052,15 @@ stages:
10401052
target_framework: 'net6.0'
10411053
provisionatorChannel: ${{ parameters.provisionatorChannel }}
10421054

1055+
- template: yaml-templates/run-msbuild-device-tests.yaml
1056+
parameters:
1057+
node_id: 4
1058+
job_name: mac_dotnetdevice_tests_4
1059+
job_suffix: One .NET
1060+
nunit_categories: $(DotNetNUnitCategories)
1061+
target_framework: 'net6.0'
1062+
provisionatorChannel: ${{ parameters.provisionatorChannel }}
1063+
10431064
- stage: designer_tests
10441065
displayName: Designer Tests
10451066
dependsOn: mac_build

build-tools/automation/yaml-templates/run-msbuild-device-tests.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,8 @@ jobs:
7373
useDotNet: ${{ eq(parameters.target_framework, 'net6.0') }}
7474
testRunTitle: MSBuildDeviceIntegration On Device - macOS-NoNode - ${{ parameters.job_suffix }}
7575
testAssembly: $(System.DefaultWorkingDirectory)/bin/Test$(XA.Build.Configuration)/MSBuildDeviceIntegration/${{ parameters.target_framework }}/MSBuildDeviceIntegration.dll
76-
nunitConsoleExtraArgs: --where "cat != Node-1 && cat != Node-2 && cat != Node-3 && cat != SystemApplication && cat != TimeZoneInfo && cat != SmokeTests ${{ parameters.nunit_categories }}"
77-
dotNetTestExtraArgs: --filter "TestCategory != Node-1 & TestCategory != Node-2 & TestCategory != Node-3 & TestCategory != TimeZoneInfo ${{ parameters.nunit_categories }}"
76+
nunitConsoleExtraArgs: --where "cat != Node-1 && cat != Node-2 && cat != Node-3 && cat != Node-4 && cat != SystemApplication && cat != TimeZoneInfo && cat != SmokeTests ${{ parameters.nunit_categories }}"
77+
dotNetTestExtraArgs: --filter "TestCategory != Node-1 & TestCategory != Node-2 & TestCategory != Node-3 & TestCategory != Node-4 & TestCategory != TimeZoneInfo ${{ parameters.nunit_categories }}"
7878
testResultsFile: TestResult-MSBuildDeviceIntegration-${{ parameters.job_name }}-NoNode-$(XA.Build.Configuration).xml
7979

8080
- task: MSBuild@1

build-tools/check-boot-times/Program.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,9 +130,10 @@ static async Task<double> GetBootTime (bool coldBoot)
130130
{
131131
var times = new List<long> ();
132132
int errors = 0;
133+
var timeoutInMS = (int) TimeSpan.FromMinutes (15).TotalMilliseconds;
133134

134135
Stopwatch sw = new Stopwatch ();
135-
var token = coldBoot ? "emulator: INFO: boot time" : "onGuestSendCommand";
136+
var token = coldBoot ? "boot completed" : "onGuestSendCommand";
136137

137138
for (int i = 0; i < executionTimes; i++) {
138139
await CloseEmulator ();
@@ -162,7 +163,7 @@ bool validation (string data, ManualResetEvent mre)
162163
bool hasTimedOut = false;
163164
sw.Reset ();
164165
sw.Start ();
165-
if (!await RunProcess (emulatorPath, $"-avd {deviceName} {bootOptions} -verbose", 300000, validation, async () => {
166+
if (!await RunProcess (emulatorPath, $"-avd {deviceName} {bootOptions} -verbose -detect-image-hang", timeoutInMS, validation, async () => {
166167
hasTimedOut = true;
167168
await ForceKillEmulator ();
168169
})) {

build-tools/scripts/TestApks.targets

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,14 @@
1919
<PropertyGroup>
2020
<TestAvdApiLevel Condition=" '$(TestAvdApiLevel)' == '' ">29</TestAvdApiLevel>
2121
<TestAvdAbi Condition=" '$(TestAvdAbi)' == '' ">x86_64</TestAvdAbi>
22-
<SdkManagerImageName Condition=" '$(SdkManagerImageName)' == '' ">system-images;android-$(TestAvdApiLevel);default;$(TestAvdAbi)</SdkManagerImageName>
22+
<TestAvdType Condition=" '$(TestAvdType)' == '' ">default</TestAvdType>
23+
<SdkManagerImageName Condition=" '$(SdkManagerImageName)' == '' ">system-images;android-$(TestAvdApiLevel);$(TestAvdType);$(TestAvdAbi)</SdkManagerImageName>
2324
<TestAvdName>XamarinAndroidTestRunner$(TestAvdApiLevel)-$(TestAvdAbi)</TestAvdName>
2425
<_AdbEmulatorPort>5570</_AdbEmulatorPort>
26+
<_AdbEmulatorShowWindow Condition=" '$(RunningOnCI)' == 'True' And '$(_AdbEmulatorShowWindow)' == '' ">False</_AdbEmulatorShowWindow>
27+
<_AdbEmulatorShowWindow Condition=" '$(_AdbEmulatorShowWindow)' == '' ">True</_AdbEmulatorShowWindow>
2528
<_ApkSizesReferenceDirectory>$(MSBuildThisFileDirectory)..\..\tests\apk-sizes-reference</_ApkSizesReferenceDirectory>
26-
<AvdLaunchTimeoutMinutes Condition=" '$(AvdLaunchTimeoutMinutes)' == '' ">5</AvdLaunchTimeoutMinutes>
29+
<AvdLaunchTimeoutMinutes Condition=" '$(AvdLaunchTimeoutMinutes)' == '' ">10</AvdLaunchTimeoutMinutes>
2730
<AvdLaunchTimeoutSeconds>$([MSBuild]::Multiply($(AvdLaunchTimeoutMinutes), 60))</AvdLaunchTimeoutSeconds>
2831
<AvdLaunchTimeoutMS>$([MSBuild]::Multiply($(AvdLaunchTimeoutSeconds), 1000))</AvdLaunchTimeoutMS>
2932
<_LogcatFilenameBase>$(MSBuildThisFileDirectory)..\..\bin\Test$(Configuration)\logcat-$(Configuration)$(TestsFlavor)</_LogcatFilenameBase>
@@ -58,6 +61,7 @@
5861
SdkVersion="$(TestAvdApiLevel)"
5962
TargetId="$(SdkManagerImageName)"
6063
ImageName="$(TestAvdName)"
64+
ImageType="$(TestAvdType)"
6165
ToolExe="$(AvdManagerToolExe)"
6266
ToolPath="$(CommandLineToolsBinPath)"
6367
RamSizeMB="3072"
@@ -71,6 +75,7 @@
7175
ImageName="$(TestAvdName)"
7276
LogcatFile="$(_LogcatFilenameBase)-full.txt"
7377
Port="$(_AdbEmulatorPort)"
78+
ShowWindow="$(_AdbEmulatorShowWindow)"
7479
ToolExe="$(EmulatorToolExe)"
7580
ToolPath="$(EmulatorToolPath)">
7681
<Output TaskParameter="AdbTarget" PropertyName="_AdbTarget" />
@@ -83,7 +88,7 @@
8388
Arguments="$(_AdbTarget) wait-for-device"
8489
ToolExe="$(AdbToolExe)"
8590
ToolPath="$(AdbToolPath)"
86-
Timeout="120000"
91+
Timeout="$(AvdLaunchTimeoutMS)"
8792
WriteOutputAsMessage="True"
8893
/>
8994
<WaitForAndroidEmulator
@@ -254,6 +259,7 @@
254259
ContinueOnError="ErrorAndContinue"
255260
AdbTarget="$(_AdbTarget)"
256261
AdbOptions="$(AdbOptions)"
262+
ApiLevel="$(TestAvdApiLevel)"
257263
LogLevel="Verbose"
258264
PackageName="%(TestApkInstrumentation.Package)"
259265
Component="%(TestApkInstrumentation.Package)/%(TestApkInstrumentation.Identity)"

build-tools/xaprepare/xaprepare/ConfigAndData/Dependencies/AndroidToolchain.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,14 +74,15 @@ public AndroidToolchain ()
7474
new AndroidToolchainComponent ("docs-24_r01", destDir: "docs", pkgRevision: "1", dependencyType: AndroidToolchainComponentType.BuildDependency),
7575
new AndroidToolchainComponent ("android_m2repository_r47", destDir: Path.Combine ("extras", "android", "m2repository"), pkgRevision: "47.0.0", dependencyType: AndroidToolchainComponentType.BuildDependency),
7676
new AndroidToolchainComponent ($"x86_64-29_r07-{osTag}", destDir: Path.Combine ("system-images", "android-29", "default", "x86_64"), relativeUrl: new Uri ("sys-img/android/", UriKind.Relative), pkgRevision: "7", dependencyType: AndroidToolchainComponentType.EmulatorDependency),
77+
new AndroidToolchainComponent ($"x86_64-31_r02", destDir: Path.Combine ("system-images", "android-31", "default", "x86_64"), relativeUrl: new Uri ("sys-img/android/", UriKind.Relative), pkgRevision: "2", dependencyType: AndroidToolchainComponentType.EmulatorDependency),
7778
new AndroidToolchainComponent ($"android-ndk-r{AndroidNdkVersion}-{osTag}", destDir: AndroidNdkDirectory, pkgRevision: AndroidPkgRevision),
7879
new AndroidToolchainComponent ($"{XABuildToolsPackagePrefix}build-tools_r{XABuildToolsVersion}-{altOsTag}", destDir: Path.Combine ("build-tools", XABuildToolsFolder), isMultiVersion: true),
7980
new AndroidToolchainComponent ($"{XABuildTools30PackagePrefix}build-tools_r{XABuildTools30Version}-{altOsTag}", destDir: Path.Combine ("build-tools", XABuildTools30Folder), isMultiVersion: true),
8081
new AndroidToolchainComponent ($"commandlinetools-{cltOsTag}-{CommandLineToolsVersion}",
8182
destDir: Path.Combine ("cmdline-tools", CommandLineToolsFolder), isMultiVersion: true),
8283
new AndroidToolchainComponent ($"{XAPlatformToolsPackagePrefix}platform-tools_r{XAPlatformToolsVersion}-{osTag}", destDir: "platform-tools", pkgRevision: XAPlatformToolsVersion),
8384
new AndroidToolchainComponent ($"sdk-tools-{osTag}-4333796", destDir: "tools", pkgRevision: "26.1.1"),
84-
new AndroidToolchainComponent ($"emulator-{osTag}-{EmulatorVersion}", destDir: "emulator", pkgRevision: EmulatorPkgRevision, dependencyType: AndroidToolchainComponentType.EmulatorDependency),
85+
new AndroidToolchainComponent ($"emulator-{osTag}_x64-{EmulatorVersion}", destDir: "emulator", pkgRevision: EmulatorPkgRevision, dependencyType: AndroidToolchainComponentType.EmulatorDependency),
8586
new AndroidToolchainComponent ($"{AndroidCmakeUrlPrefix}cmake-{AndroidCmakeVersion}-{osTag}", destDir: Path.Combine ("cmake", AndroidCmakeVersionPath), isMultiVersion: true, noSubdirectory: true, pkgRevision: "3.18.1"),
8687
};
8788
}

0 commit comments

Comments
 (0)