Skip to content

Commit 68fe697

Browse files
authored
Update emulator for d15-9 (#2171)
Context: #2157 Merge commit; cherry-picks the following commits from master: * d01e4ce (PR #2087): Revert "[mono-sdks] Use for android toolchain" * 7c51a91 (PR #2119): [tests] Update emulator to the latest version, switch to API 28 We're hoping that the emulator update will make unit test execution more reliable; see also PR #2157, which often has a crash when running some unit tests.
2 parents f58791f + c0f67eb commit 68fe697

File tree

9 files changed

+120
-129
lines changed

9 files changed

+120
-129
lines changed

Configuration.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@
113113
<AndroidToolPath Condition=" '$(AndroidToolPath)' == '' ">$(AndroidSdkFullPath)\tools</AndroidToolPath>
114114
<AndroidToolsBinPath Condition=" '$(AndroidToolsBinPath)' == '' ">$(AndroidToolPath)\bin</AndroidToolsBinPath>
115115
<AndroidToolExe Condition=" '$(AndroidToolExe)' == '' ">android</AndroidToolExe>
116-
<EmulatorToolPath Condition=" '$(EmulatorToolPath)' == '' ">$(AndroidSdkFullPath)\tools</EmulatorToolPath>
116+
<EmulatorToolPath Condition=" '$(EmulatorToolPath)' == '' ">$(AndroidSdkFullPath)\emulator</EmulatorToolPath>
117117
<EmulatorToolExe Condition=" '$(EmulatorToolExe)' == '' ">emulator</EmulatorToolExe>
118118
<NdkBuildPath Condition=" '$(NdkBuildPath)' == '' And '$(HostOS)' != 'Windows' ">$(AndroidNdkDirectory)\ndk-build</NdkBuildPath>
119119
<NdkBuildPath Condition=" '$(NdkBuildPath)' == '' And '$(HostOS)' == 'Windows' ">$(AndroidNdkDirectory)\ndk-build.cmd</NdkBuildPath>

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ protected override string GenerateCommandLineCommands ()
5959

6060
protected override void LogEventsFromTextOutput (string singleLine, MessageImportance messageImportance)
6161
{
62-
base.LogEventsFromTextOutput (singleLine, messageImportance);
62+
Log.LogMessage (MessageImportance.Low, singleLine);
6363
Lines.Add (singleLine);
6464
}
6565
}

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

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,11 @@ public class CreateAndroidEmulator : Task
2222

2323
public string TargetId {get; set;}
2424

25-
public string ImageName {get; set;} = "XamarinAndroidTestRunner";
25+
public string ImageName {get; set;} = "XamarinAndroidTestRunner";
26+
27+
public string DataPartitionSizeMB {get; set;} = "2048";
28+
public string RamSizeMB {get; set;} = "2048";
29+
2630

2731
public override bool Execute ()
2832
{
@@ -68,6 +72,29 @@ void Run (string android)
6872

6973
var arguments = $"create avd --abi {AndroidAbi} -f -n {ImageName} --package \"{TargetId}\"";
7074
Exec (android, arguments);
75+
76+
string configPath = Path.Combine (Environment.GetFolderPath (Environment.SpecialFolder.Personal), ".android", "avd", $"{ImageName}.avd", "config.ini");
77+
if (!File.Exists (configPath)) {
78+
Log.LogWarning ($"Config file for AVD '{ImageName}' not found at {configPath}");
79+
Log.LogWarning ($"AVD '{ImageName}' will use default emulator settings (memory and data partition size)");
80+
return;
81+
}
82+
83+
ulong diskSize;
84+
if (!UInt64.TryParse (DataPartitionSizeMB, out diskSize))
85+
Log.LogError ($"Invalid data partition size '{DataPartitionSizeMB}' - must be a positive integer value expressing size in megabytes");
86+
87+
ulong ramSize;
88+
if (!UInt64.TryParse (RamSizeMB, out ramSize))
89+
Log.LogError ($"Invalid RAM size '{RamSizeMB}' - must be a positive integer value expressing size in megabytes");
90+
91+
if (Log.HasLoggedErrors)
92+
return;
93+
94+
File.AppendAllLines (configPath, new string[] {
95+
$"disk.dataPartition.size={diskSize}M",
96+
$"hw.ramSize={ramSize}"
97+
});
7198
}
7299

73100
StreamWriter stdin;

build-tools/android-toolchain/android-toolchain-windows.targets

Lines changed: 0 additions & 103 deletions
This file was deleted.

build-tools/android-toolchain/android-toolchain.csproj

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,7 @@
1616
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
1717
<Import Project="android-toolchain.projitems" />
1818
<Import Project="..\scripts\RequiredPrograms.targets" />
19-
<Import Project="android-toolchain.targets" Condition=" '$(HostOS)' != 'Windows' " />
20-
<Import Project="android-toolchain-windows.targets" Condition=" '$(HostOS)' == 'Windows' " />
19+
<Import Project="android-toolchain.targets" />
2120
<ItemGroup>
2221
<ProjectReference Include="..\xa-prep-tasks\xa-prep-tasks.csproj">
2322
<Project>{7CE69551-BD73-4726-ACAA-AAF89C84BAF8}</Project>

build-tools/android-toolchain/android-toolchain.projitems

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
<HostOS>Linux</HostOS>
2424
<DestDir>tools</DestDir>
2525
</AndroidSdkItem>
26-
<AndroidSdkItem Include="emulator-linux-4773671">
26+
<AndroidSdkItem Include="emulator-linux-4969155">
2727
<HostOS>Linux</HostOS>
2828
<DestDir>emulator</DestDir>
2929
</AndroidSdkItem>
@@ -42,7 +42,7 @@
4242
<HostOS>Darwin</HostOS>
4343
<DestDir>tools</DestDir>
4444
</AndroidSdkItem>
45-
<AndroidSdkItem Include="emulator-darwin-4773671">
45+
<AndroidSdkItem Include="emulator-darwin-4969155">
4646
<HostOS>Darwin</HostOS>
4747
<DestDir>emulator</DestDir>
4848
</AndroidSdkItem>
@@ -61,7 +61,7 @@
6161
<HostOS>Windows</HostOS>
6262
<DestDir>tools</DestDir>
6363
</AndroidSdkItem>
64-
<AndroidSdkItem Include="emulator-windows-4773671">
64+
<AndroidSdkItem Include="emulator-windows-4969155">
6565
<HostOS>Windows</HostOS>
6666
<DestDir>emulator</DestDir>
6767
</AndroidSdkItem>
@@ -133,10 +133,10 @@
133133
<HostOS></HostOS>
134134
<DestDir>extras\android\m2repository</DestDir>
135135
</AndroidSdkItem>
136-
<AndroidSdkItem Include="x86-21_r05">
136+
<AndroidSdkItem Include="x86-28_r04">
137137
<HostOS></HostOS>
138138
<RelUrl>sys-img/android/</RelUrl>
139-
<DestDir>system-images\android-21\default\x86</DestDir>
139+
<DestDir>system-images\android-28\default\x86</DestDir>
140140
</AndroidSdkItem>
141141
</ItemGroup>
142142
<ItemGroup>

build-tools/android-toolchain/android-toolchain.targets

Lines changed: 80 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66
<BuildDependsOn>
77
ResolveReferences;
88
_CopyBootstrapTasksAssembly;
9-
_CreateAndroidToolchains;
9+
_DownloadItems;
10+
_UnzipFiles;
1011
_CreateMxeToolchains;
1112
_AcceptAndroidSdkLicenses;
1213
</BuildDependsOn>
@@ -18,26 +19,93 @@
1819
Properties="OutputPath=$(AndroidToolchainDirectory)\"
1920
/>
2021
</Target>
21-
<Target Name="_PrepareAndroidToolchainItems">
22+
<UsingTask AssemblyFile="..\..\bin\Build$(Configuration)\Xamarin.Android.Tools.BootstrapTasks.dll" TaskName="Xamarin.Android.Tools.BootstrapTasks.UnzipDirectoryChildren" />
23+
<Target Name="_DetermineItems">
24+
<CreateItem
25+
Include="@(AndroidSdkItem)"
26+
Condition=" '%(HostOS)' == '$(HostOS)' Or '%(HostOS)' == '' ">
27+
<Output TaskParameter="Include" ItemName="_PlatformAndroidSdkItem"/>
28+
</CreateItem>
29+
<CreateItem
30+
Include="@(AndroidNdkItem)"
31+
Condition=" '%(HostOS)' == '$(HostOS)' Or '%(HostOS)' == '' ">
32+
<Output TaskParameter="Include" ItemName="_PlatformAndroidNdkItem"/>
33+
</CreateItem>
34+
<CreateItem
35+
Include="@(AntItem)"
36+
Condition=" '%(HostOS)' == '$(HostOS)' Or '%(HostOS)' == '' ">
37+
<Output TaskParameter="Include" ItemName="_PlatformAntItem"/>
38+
</CreateItem>
2239
<ItemGroup>
23-
<_AndroidSdkStampFiles Include="@(AndroidSdkItem->'$(AndroidToolchainDirectory)\sdk\.stamp-%(Identity)')" Condition=" '%(AndroidSdkItem.HostOS)' == '$(HostOS)' Or '%(AndroidSdkItem.HostOS)' == '' " />
24-
<_AndroidNdkStampFiles Include="@(AndroidNdkItem->'$(AndroidToolchainDirectory)\ndk\.stamp-%(Identity)')" Condition=" '%(AndroidNdkItem.HostOS)' == '$(HostOS)' Or '%(AndroidNdkItem.HostOS)' == '' " />
25-
<_AntStampFiles Include="@(AntItem->'$(AndroidToolchainDirectory)\ant\.stamp-%(Identity)')" Condition=" '%(AntItem.HostOS)' == '$(HostOS)' Or '%(AntItem.HostOS)' == '' " />
40+
<_SdkStampFiles Include="@(_PlatformAndroidSdkItem->'$(AndroidToolchainDirectory)\sdk\.stamp-%(Identity)')" />
41+
</ItemGroup>
42+
<ItemGroup>
43+
<_SdkStampFiles Include="@(_PlatformAntItem->'$(AntDirectory)\.stamp-%(Identity)')" />
44+
</ItemGroup>
45+
<ItemGroup>
46+
<_DownloadedItem Include="@(_PlatformAndroidSdkItem->'$(AndroidToolchainCacheDirectory)\%(Identity).zip')" />
47+
<_DownloadedItem Include="@(_PlatformAndroidNdkItem->'$(AndroidToolchainCacheDirectory)\%(Identity).zip')" />
48+
<_DownloadedItem Include="@(_PlatformAntItem->'$(AndroidToolchainCacheDirectory)\%(Identity).zip')" />
2649
</ItemGroup>
2750
</Target>
28-
<Target Name="_CreateAndroidToolchains"
29-
DependsOnTargets="_PrepareAndroidToolchainItems"
30-
Outputs="@(_AndroidSdkStampFiles);@(_AndroidNdkStampFiles);@(_AntStampFiles)">
31-
<Exec
32-
Command="make $(MakeConcurrency) provision-android DISABLE_IOS=1 ANDROID_TOOLCHAIN_DIR=&quot;$(AndroidToolchainDirectory)&quot; ANDROID_TOOLCHAIN_CACHE_DIR=&quot;$(AndroidToolchainCacheDirectory)&quot; ANDROID_TOOLCHAIN_PREFIX=&quot;$(AndroidToolchainDirectory)\toolchains&quot; ANDROID_BUILD_TOOLS_VERSION=&quot;$(XABuildToolsVersion)&quot; ANDROID_BUILD_TOOLS_DIR=&quot;$(XABuildToolsFolder)&quot; ANDROID_PLATFORM_TOOLS=&quot;$(XAPlatformToolsVersion)&quot;"
33-
WorkingDirectory="$(MonoSourceFullPath)\sdks\builds"
51+
<Target Name="_DownloadItems"
52+
DependsOnTargets="_DetermineItems"
53+
Outputs="@(_DownloadedItem)">
54+
<MakeDir Directories="$(AndroidToolchainCacheDirectory)" />
55+
<DownloadUri
56+
SourceUris="@(_PlatformAndroidSdkItem->'$(AndroidUri)/%(RelUrl)%(Identity).zip');@(_PlatformAndroidNdkItem->'$(AndroidUri)/%(RelUrl)%(Identity).zip')"
57+
DestinationFiles="@(_PlatformAndroidSdkItem->'$(AndroidToolchainCacheDirectory)\%(Identity).zip');@(_PlatformAndroidNdkItem->'$(AndroidToolchainCacheDirectory)\%(Identity).zip')"
58+
/>
59+
<DownloadUri
60+
SourceUris="@(_PlatformAntItem->'$(AntUri)/%(RelUrl)%(Identity).zip')"
61+
DestinationFiles="@(_PlatformAntItem->'$(AndroidToolchainCacheDirectory)\%(Identity).zip')"
62+
/>
63+
</Target>
64+
<Target Name="_UnzipFiles"
65+
DependsOnTargets="_DetermineItems"
66+
Inputs="@(_DownloadedItem)"
67+
Outputs="@(_SdkStampFiles);$(AndroidToolchainDirectory)\ndk\.stamp-ndk">
68+
<CreateItem
69+
Include="@(_PlatformAndroidSdkItem->'$(AndroidToolchainCacheDirectory)\%(_PlatformAndroidSdkItem.Identity).zip'">
70+
<Output TaskParameter="Include" ItemName="_AndroidSdkItems"/>
71+
</CreateItem>
72+
<CreateItem
73+
Include="@(_PlatformAndroidNdkItem->'$(AndroidToolchainCacheDirectory)\%(_PlatformAndroidNdkItem.Identity).zip'"
74+
Condition=" '%(HostOS)' == '$(HostOS)' Or '%(HostOS)' == '' ">
75+
<Output TaskParameter="Include" ItemName="_AndroidNdkItems"/>
76+
</CreateItem>
77+
78+
<RemoveDir Directories="$(AndroidSdkDirectory);$(AndroidNdkDirectory);$(AntDirectory)" />
79+
<MakeDir Directories="$(AndroidSdkDirectory);$(AndroidNdkDirectory);$(AntDirectory)" />
80+
81+
<UnzipDirectoryChildren
82+
HostOS="$(HostOS)"
83+
NoSubdirectory="%(_PlatformAndroidSdkItem.NoSubdirectory)"
84+
SourceFiles="@(_PlatformAndroidSdkItem->'$(AndroidToolchainCacheDirectory)\%(Identity).zip')"
85+
DestinationFolder="$(AndroidToolchainDirectory)\sdk"
86+
/>
87+
<UnzipDirectoryChildren
88+
HostOS="$(HostOS)"
89+
NoSubdirectory="%(_PlatformAndroidSdkItem.NoSubdirectory)"
90+
SourceFiles="@(_PlatformAndroidNdkItem->'$(AndroidToolchainCacheDirectory)\%(Identity).zip')"
91+
DestinationFolder="$(AndroidToolchainDirectory)\ndk"
92+
/>
93+
<UnzipDirectoryChildren
94+
HostOS="$(HostOS)"
95+
NoSubdirectory="%(_PlatformAndroidSdkItem.NoSubdirectory)"
96+
SourceFiles="@(_PlatformAntItem->'$(AndroidToolchainCacheDirectory)\%(Identity).zip')"
97+
DestinationFolder="$(AntDirectory)"
98+
/>
99+
<Touch
100+
Files="@(_SdkStampFiles);$(AndroidToolchainDirectory)\ndk\.stamp-ndk"
101+
AlwaysCreate="True"
34102
/>
35103
</Target>
36104
<Target Name="_AcceptAndroidSdkLicenses">
37105
<AcceptAndroidSdkLicenses AndroidSdkDirectory="$(AndroidSdkDirectory)" JavaSdkDirectory="$(JavaSdkDirectory)" />
38106
</Target>
39107
<Target Name="_CreateMxeToolchains"
40-
Condition=" '$(NeedMxe)' == 'true' And ($(AndroidSupportedHostJitAbisForConditionalChecks.Contains (':mxe-Win32:')) Or $(AndroidSupportedHostJitAbisForConditionalChecks.Contains (':mxe-Win64:')))"
108+
Condition=" '$(HostOS)' != 'Windows' And '$(NeedMxe)' == 'true' And ($(AndroidSupportedHostJitAbisForConditionalChecks.Contains (':mxe-Win32:')) Or $(AndroidSupportedHostJitAbisForConditionalChecks.Contains (':mxe-Win64:')))"
41109
Outputs="$(AndroidMxeFullPath)\.stamp">
42110
<GitCommitHash
43111
WorkingDirectory="..\..\external\mxe"

build-tools/scripts/TestApks.targets

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,12 @@
3232
AndroidAbi="x86"
3333
AndroidSdkHome="$(AndroidSdkDirectory)"
3434
JavaSdkHome="$(JavaSdkDirectory)"
35-
SdkVersion="21"
35+
SdkVersion="28"
3636
ImageName="$(_TestImageName)"
3737
ToolExe="$(AvdManagerToolExe)"
3838
ToolPath="$(AndroidToolsBinPath)"
39+
RamSizeMB="2048"
40+
DataPartitionSizeMB="2048"
3941
/>
4042
<StartAndroidEmulator
4143
Condition=" '$(_ValidAdbTarget)' != 'True' "

src/mono-runtimes/mono-runtimes.targets

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,11 @@
4040
<_MonoSdksAndroidToolchainDir>$(AndroidToolchainDirectory)</_MonoSdksAndroidToolchainDir>
4141
<_MonoSdksAndroidToolchainCacheDir>$(AndroidToolchainCacheDirectory)</_MonoSdksAndroidToolchainCacheDir>
4242
<_MonoSdksAndroidToolchainPrefix>$(AndroidToolchainDirectory)\toolchains</_MonoSdksAndroidToolchainPrefix>
43-
<_MonoSdksAndroidBuildToolsVersion>$(XABuildToolsVersion)</_MonoSdksAndroidBuildToolsVersion>
44-
<_MonoSdksAndroidBuildToolsDir>$(XABuildToolsFolder)</_MonoSdksAndroidBuildToolsDir>
4543
<_MonoSdksLlvmSrc>$(MSBuildThisFileDirectory)..\..\external\llvm</_MonoSdksLlvmSrc>
4644
<_MonoSdksMxePrefixDir>$(AndroidToolchainDirectory)</_MonoSdksMxePrefixDir>
4745
<_MonoSdksMxeSrc>$(MSBuildThisFileDirectory)..\..\external\mxe</_MonoSdksMxeSrc>
4846

49-
<_MonoSdksParameters>CONFIGURATION=$(_MonoSdksConfiguration) IGNORE_PROVISION_MXE=true IGNORE_PROVISION_ANDROID=true IGNORE_PACKAGE_LLVM=true ANDROID_TOOLCHAIN_DIR=&quot;$(_MonoSdksAndroidToolchainDir)&quot; ANDROID_TOOLCHAIN_CACHE_DIR=&quot;$(_MonoSdksAndroidToolchainCacheDir)&quot; ANDROID_TOOLCHAIN_PREFIX=&quot;$(_MonoSdksAndroidToolchainPrefix)&quot; ANDROID_BUILD_TOOLS_VERSION=&quot;$(_MonoSdksAndroidBuildToolsVersion)&quot; ANDROID_BUILD_TOOLS_DIR=&quot;$(_MonoSdksAndroidBuildToolsDir)&quot; LLVM_SRC=&quot;$(_MonoSdksLlvmSrc)&quot; MXE_PREFIX_DIR=&quot;$(_MonoSdksMxePrefixDir)&quot; MXE_SRC=&quot;$(_MonoSdksMxeSrc)&quot;</_MonoSdksParameters>
47+
<_MonoSdksParameters>CONFIGURATION=$(_MonoSdksConfiguration) IGNORE_PROVISION_MXE=true IGNORE_PROVISION_ANDROID=true IGNORE_PACKAGE_LLVM=true ANDROID_TOOLCHAIN_DIR=&quot;$(_MonoSdksAndroidToolchainDir)&quot; ANDROID_TOOLCHAIN_CACHE_DIR=&quot;$(_MonoSdksAndroidToolchainCacheDir)&quot; ANDROID_TOOLCHAIN_PREFIX=&quot;$(_MonoSdksAndroidToolchainPrefix)&quot; LLVM_SRC=&quot;$(_MonoSdksLlvmSrc)&quot; MXE_PREFIX_DIR=&quot;$(_MonoSdksMxePrefixDir)&quot; MXE_SRC=&quot;$(_MonoSdksMxeSrc)&quot;</_MonoSdksParameters>
5048
</PropertyGroup>
5149
<PropertyGroup>
5250
<ForceBuildDependsOn>

0 commit comments

Comments
 (0)