From de65d774346814063107827c7c29ce6c3b391611 Mon Sep 17 00:00:00 2001 From: Ludovic Henry Date: Mon, 27 Aug 2018 13:11:45 -0400 Subject: [PATCH 1/2] Revert "[mono-sdks] Use for android toolchain" (#2087) This reverts commit fef45412d6b852afe654764bb38a2ad3ab5871c2. --- .../android-toolchain-windows.targets | 103 ------------------ .../android-toolchain.csproj | 3 +- .../android-toolchain.projitems | 6 +- .../android-toolchain.targets | 92 ++++++++++++++-- src/mono-runtimes/mono-runtimes.targets | 4 +- 5 files changed, 85 insertions(+), 123 deletions(-) delete mode 100644 build-tools/android-toolchain/android-toolchain-windows.targets diff --git a/build-tools/android-toolchain/android-toolchain-windows.targets b/build-tools/android-toolchain/android-toolchain-windows.targets deleted file mode 100644 index db7d34d94e7..00000000000 --- a/build-tools/android-toolchain/android-toolchain-windows.targets +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - - - - - ResolveReferences; - _CopyBootstrapTasksAssembly; - _DownloadItems; - _UnzipFiles; - _AcceptAndroidSdkLicenses; - - - - - - - - - - - - - - <_SdkStampFiles Include="@(_PlatformAndroidSdkItem->'$(AndroidToolchainDirectory)\sdk\.stamp-%(Identity)')" /> - - - <_SdkStampFiles Include="@(_PlatformAntItem->'$(AntDirectory)\.stamp-%(Identity)')" /> - - - <_DownloadedItem Include="@(_PlatformAndroidSdkItem->'$(AndroidToolchainCacheDirectory)\%(Identity).zip')" /> - <_DownloadedItem Include="@(_PlatformAndroidNdkItem->'$(AndroidToolchainCacheDirectory)\%(Identity).zip')" /> - <_DownloadedItem Include="@(_PlatformAntItem->'$(AndroidToolchainCacheDirectory)\%(Identity).zip')" /> - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/build-tools/android-toolchain/android-toolchain.csproj b/build-tools/android-toolchain/android-toolchain.csproj index 6b432b215d5..842439ec6b3 100644 --- a/build-tools/android-toolchain/android-toolchain.csproj +++ b/build-tools/android-toolchain/android-toolchain.csproj @@ -16,8 +16,7 @@ - - + {7CE69551-BD73-4726-ACAA-AAF89C84BAF8} diff --git a/build-tools/android-toolchain/android-toolchain.projitems b/build-tools/android-toolchain/android-toolchain.projitems index e34657e8d2c..196d165d810 100644 --- a/build-tools/android-toolchain/android-toolchain.projitems +++ b/build-tools/android-toolchain/android-toolchain.projitems @@ -23,7 +23,7 @@ Linux tools - + Linux emulator @@ -42,7 +42,7 @@ Darwin tools - + Darwin emulator @@ -61,7 +61,7 @@ Windows tools - + Windows emulator diff --git a/build-tools/android-toolchain/android-toolchain.targets b/build-tools/android-toolchain/android-toolchain.targets index 904141636ce..552148285eb 100644 --- a/build-tools/android-toolchain/android-toolchain.targets +++ b/build-tools/android-toolchain/android-toolchain.targets @@ -6,7 +6,8 @@ ResolveReferences; _CopyBootstrapTasksAssembly; - _CreateAndroidToolchains; + _DownloadItems; + _UnzipFiles; _CreateMxeToolchains; _AcceptAndroidSdkLicenses; @@ -18,26 +19,93 @@ Properties="OutputPath=$(AndroidToolchainDirectory)\" /> - + + + + + + + + + + + - <_AndroidSdkStampFiles Include="@(AndroidSdkItem->'$(AndroidToolchainDirectory)\sdk\.stamp-%(Identity)')" Condition=" '%(AndroidSdkItem.HostOS)' == '$(HostOS)' Or '%(AndroidSdkItem.HostOS)' == '' " /> - <_AndroidNdkStampFiles Include="@(AndroidNdkItem->'$(AndroidToolchainDirectory)\ndk\.stamp-%(Identity)')" Condition=" '%(AndroidNdkItem.HostOS)' == '$(HostOS)' Or '%(AndroidNdkItem.HostOS)' == '' " /> - <_AntStampFiles Include="@(AntItem->'$(AndroidToolchainDirectory)\ant\.stamp-%(Identity)')" Condition=" '%(AntItem.HostOS)' == '$(HostOS)' Or '%(AntItem.HostOS)' == '' " /> + <_SdkStampFiles Include="@(_PlatformAndroidSdkItem->'$(AndroidToolchainDirectory)\sdk\.stamp-%(Identity)')" /> + + + <_SdkStampFiles Include="@(_PlatformAntItem->'$(AntDirectory)\.stamp-%(Identity)')" /> + + + <_DownloadedItem Include="@(_PlatformAndroidSdkItem->'$(AndroidToolchainCacheDirectory)\%(Identity).zip')" /> + <_DownloadedItem Include="@(_PlatformAndroidNdkItem->'$(AndroidToolchainCacheDirectory)\%(Identity).zip')" /> + <_DownloadedItem Include="@(_PlatformAntItem->'$(AndroidToolchainCacheDirectory)\%(Identity).zip')" /> - - + + + + + + + + + + + + + + + + + + + $(AndroidToolchainDirectory) <_MonoSdksAndroidToolchainCacheDir>$(AndroidToolchainCacheDirectory) <_MonoSdksAndroidToolchainPrefix>$(AndroidToolchainDirectory)\toolchains - <_MonoSdksAndroidBuildToolsVersion>$(XABuildToolsVersion) - <_MonoSdksAndroidBuildToolsDir>$(XABuildToolsFolder) <_MonoSdksLlvmSrc>$(MSBuildThisFileDirectory)..\..\external\llvm <_MonoSdksMxePrefixDir>$(AndroidToolchainDirectory) <_MonoSdksMxeSrc>$(MSBuildThisFileDirectory)..\..\external\mxe - <_MonoSdksParameters>CONFIGURATION=$(_MonoSdksConfiguration) IGNORE_PROVISION_MXE=true IGNORE_PROVISION_ANDROID=true IGNORE_PACKAGE_LLVM=true ANDROID_TOOLCHAIN_DIR="$(_MonoSdksAndroidToolchainDir)" ANDROID_TOOLCHAIN_CACHE_DIR="$(_MonoSdksAndroidToolchainCacheDir)" ANDROID_TOOLCHAIN_PREFIX="$(_MonoSdksAndroidToolchainPrefix)" ANDROID_BUILD_TOOLS_VERSION="$(_MonoSdksAndroidBuildToolsVersion)" ANDROID_BUILD_TOOLS_DIR="$(_MonoSdksAndroidBuildToolsDir)" LLVM_SRC="$(_MonoSdksLlvmSrc)" MXE_PREFIX_DIR="$(_MonoSdksMxePrefixDir)" MXE_SRC="$(_MonoSdksMxeSrc)" + <_MonoSdksParameters>CONFIGURATION=$(_MonoSdksConfiguration) IGNORE_PROVISION_MXE=true IGNORE_PROVISION_ANDROID=true IGNORE_PACKAGE_LLVM=true ANDROID_TOOLCHAIN_DIR="$(_MonoSdksAndroidToolchainDir)" ANDROID_TOOLCHAIN_CACHE_DIR="$(_MonoSdksAndroidToolchainCacheDir)" ANDROID_TOOLCHAIN_PREFIX="$(_MonoSdksAndroidToolchainPrefix)" LLVM_SRC="$(_MonoSdksLlvmSrc)" MXE_PREFIX_DIR="$(_MonoSdksMxePrefixDir)" MXE_SRC="$(_MonoSdksMxeSrc)" From c0f67ebdca7dc82e48785891bdc3319a81d75abb Mon Sep 17 00:00:00 2001 From: Marek Habersack Date: Thu, 30 Aug 2018 21:11:09 +0200 Subject: [PATCH 2/2] [tests] Update emulator to the latest version, switch to API 28 (#2119) Updates the Android emulator to the latest version available, currently `4969155` a.k.a. v27.3.10, and: * Switch its system image to API-28, and * Make sure that the emulator is started from the `emulator` subdir of the Android SDK root (the binary in `tools` won't work anymore), * Attempt to not error out when we uninstall packages that don't exist in the AVD. In addition to those changes, two new properties were added to the `` task: * `DataPartitionSizeMB` (defaults to `2048`): Sets the emulator's data partition size. The data partition created by default has only around 800MB of space available, which may not be enough to install and run all our tests. * `RamSizeMB` (defaults to `2048`): Sets the emulator's RAM size --- Configuration.props | 2 +- .../Adb.cs | 2 +- .../CreateAndroidEmulator.cs | 29 ++++++++++++++++++- .../android-toolchain.projitems | 10 +++---- build-tools/scripts/TestApks.targets | 4 ++- 5 files changed, 38 insertions(+), 9 deletions(-) diff --git a/Configuration.props b/Configuration.props index 1d745dd75f4..e13031a9bc4 100644 --- a/Configuration.props +++ b/Configuration.props @@ -113,7 +113,7 @@ $(AndroidSdkFullPath)\tools $(AndroidToolPath)\bin android - $(AndroidSdkFullPath)\tools + $(AndroidSdkFullPath)\emulator emulator $(AndroidNdkDirectory)\ndk-build $(AndroidNdkDirectory)\ndk-build.cmd diff --git a/build-tools/Xamarin.Android.Tools.BootstrapTasks/Xamarin.Android.Tools.BootstrapTasks/Adb.cs b/build-tools/Xamarin.Android.Tools.BootstrapTasks/Xamarin.Android.Tools.BootstrapTasks/Adb.cs index 5dd87e5f507..ced5311531d 100644 --- a/build-tools/Xamarin.Android.Tools.BootstrapTasks/Xamarin.Android.Tools.BootstrapTasks/Adb.cs +++ b/build-tools/Xamarin.Android.Tools.BootstrapTasks/Xamarin.Android.Tools.BootstrapTasks/Adb.cs @@ -59,7 +59,7 @@ protected override string GenerateCommandLineCommands () protected override void LogEventsFromTextOutput (string singleLine, MessageImportance messageImportance) { - base.LogEventsFromTextOutput (singleLine, messageImportance); + Log.LogMessage (MessageImportance.Low, singleLine); Lines.Add (singleLine); } } diff --git a/build-tools/Xamarin.Android.Tools.BootstrapTasks/Xamarin.Android.Tools.BootstrapTasks/CreateAndroidEmulator.cs b/build-tools/Xamarin.Android.Tools.BootstrapTasks/Xamarin.Android.Tools.BootstrapTasks/CreateAndroidEmulator.cs index c332f2b9cfd..24dbdbb21f0 100644 --- a/build-tools/Xamarin.Android.Tools.BootstrapTasks/Xamarin.Android.Tools.BootstrapTasks/CreateAndroidEmulator.cs +++ b/build-tools/Xamarin.Android.Tools.BootstrapTasks/Xamarin.Android.Tools.BootstrapTasks/CreateAndroidEmulator.cs @@ -22,7 +22,11 @@ public class CreateAndroidEmulator : Task public string TargetId {get; set;} - public string ImageName {get; set;} = "XamarinAndroidTestRunner"; + public string ImageName {get; set;} = "XamarinAndroidTestRunner"; + + public string DataPartitionSizeMB {get; set;} = "2048"; + public string RamSizeMB {get; set;} = "2048"; + public override bool Execute () { @@ -68,6 +72,29 @@ void Run (string android) var arguments = $"create avd --abi {AndroidAbi} -f -n {ImageName} --package \"{TargetId}\""; Exec (android, arguments); + + string configPath = Path.Combine (Environment.GetFolderPath (Environment.SpecialFolder.Personal), ".android", "avd", $"{ImageName}.avd", "config.ini"); + if (!File.Exists (configPath)) { + Log.LogWarning ($"Config file for AVD '{ImageName}' not found at {configPath}"); + Log.LogWarning ($"AVD '{ImageName}' will use default emulator settings (memory and data partition size)"); + return; + } + + ulong diskSize; + if (!UInt64.TryParse (DataPartitionSizeMB, out diskSize)) + Log.LogError ($"Invalid data partition size '{DataPartitionSizeMB}' - must be a positive integer value expressing size in megabytes"); + + ulong ramSize; + if (!UInt64.TryParse (RamSizeMB, out ramSize)) + Log.LogError ($"Invalid RAM size '{RamSizeMB}' - must be a positive integer value expressing size in megabytes"); + + if (Log.HasLoggedErrors) + return; + + File.AppendAllLines (configPath, new string[] { + $"disk.dataPartition.size={diskSize}M", + $"hw.ramSize={ramSize}" + }); } StreamWriter stdin; diff --git a/build-tools/android-toolchain/android-toolchain.projitems b/build-tools/android-toolchain/android-toolchain.projitems index 196d165d810..bcaa794de41 100644 --- a/build-tools/android-toolchain/android-toolchain.projitems +++ b/build-tools/android-toolchain/android-toolchain.projitems @@ -23,7 +23,7 @@ Linux tools - + Linux emulator @@ -42,7 +42,7 @@ Darwin tools - + Darwin emulator @@ -61,7 +61,7 @@ Windows tools - + Windows emulator @@ -133,10 +133,10 @@ extras\android\m2repository - + sys-img/android/ - system-images\android-21\default\x86 + system-images\android-28\default\x86 diff --git a/build-tools/scripts/TestApks.targets b/build-tools/scripts/TestApks.targets index 30e99373f77..983334e06ac 100644 --- a/build-tools/scripts/TestApks.targets +++ b/build-tools/scripts/TestApks.targets @@ -32,10 +32,12 @@ AndroidAbi="x86" AndroidSdkHome="$(AndroidSdkDirectory)" JavaSdkHome="$(JavaSdkDirectory)" - SdkVersion="21" + SdkVersion="28" ImageName="$(_TestImageName)" ToolExe="$(AvdManagerToolExe)" ToolPath="$(AndroidToolsBinPath)" + RamSizeMB="2048" + DataPartitionSizeMB="2048" />