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-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..214f8f64cef 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 @@ -23,7 +23,7 @@ Linux tools - + Linux emulator @@ -34,7 +34,7 @@ Darwin build-tools\$(XABuildToolsFolder) - + Darwin platform-tools @@ -42,7 +42,7 @@ Darwin tools - + Darwin emulator @@ -53,7 +53,7 @@ Windows build-tools\$(XABuildToolsFolder) - + Windows platform-tools @@ -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/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)"