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)"