From d0ab0c3207563e446678092705960845f0f0a376 Mon Sep 17 00:00:00 2001 From: Atsushi Eno Date: Thu, 21 Jun 2018 01:43:34 +0900 Subject: [PATCH 1/3] [android-toolchain] Install Android platform-tools r28 (#1858) If you are running Android O or above as the Android target to test `make run-apk-tests`, it will fail because of an `adb` server version mismatch (39 vs. 40). This is a common `adb` issue e.g.: https://sqa.stackexchange.com/questions/20524/how-to-resolve-adb-server-version-32-doesnt-match-this-client-36-killin Bump to Android platform-tools r28 so that we have an updated `adb`, which will avoid the version mismatch error. --- build-tools/android-toolchain/android-toolchain.projitems | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/build-tools/android-toolchain/android-toolchain.projitems b/build-tools/android-toolchain/android-toolchain.projitems index e34657e8d2c..84c868eb1c0 100644 --- a/build-tools/android-toolchain/android-toolchain.projitems +++ b/build-tools/android-toolchain/android-toolchain.projitems @@ -15,7 +15,7 @@ Linux build-tools\$(XABuildToolsFolder) - + Linux platform-tools @@ -34,7 +34,7 @@ Darwin build-tools\$(XABuildToolsFolder) - + Darwin platform-tools @@ -53,7 +53,7 @@ Windows build-tools\$(XABuildToolsFolder) - + Windows platform-tools From a2e4e957baf4852534dc4a732be94225f7165b67 Mon Sep 17 00:00:00 2001 From: Ludovic Henry Date: Mon, 27 Aug 2018 13:11:45 -0400 Subject: [PATCH 2/3] 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 84c868eb1c0..1b6b8c69f13 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 2a59e6f6d73089cd9ce781ec3e2dde1255f0b9ed Mon Sep 17 00:00:00 2001 From: Marek Habersack Date: Thu, 30 Aug 2018 21:11:09 +0200 Subject: [PATCH 3/3] [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 1b6b8c69f13..214f8f64cef 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" />