diff --git a/Configuration.props b/Configuration.props index b1c3d747f36..c6dfe92a4ed 100644 --- a/Configuration.props +++ b/Configuration.props @@ -116,7 +116,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 8c9e9934e24..dd2a478e801 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 @@ -151,10 +151,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 906c2c6b4a8..566742f7237 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" />