diff --git a/samples/ControlCatalog.Android/ControlCatalog.Android.csproj b/samples/ControlCatalog.Android/ControlCatalog.Android.csproj
index 1a68c4d732..617b6b6ab0 100644
--- a/samples/ControlCatalog.Android/ControlCatalog.Android.csproj
+++ b/samples/ControlCatalog.Android/ControlCatalog.Android.csproj
@@ -32,7 +32,7 @@
True
False
False
- armeabi-v7a;x86
+ armeabi-v7a;x86;x86_64
Xamarin
False
False
@@ -51,7 +51,7 @@
True
False
False
- armeabi-v7a,x86
+ armeabi-v7a,x86;x86_64
Xamarin
False
False
@@ -125,6 +125,10 @@
{42472427-4774-4c81-8aff-9f27b8e31721}
Avalonia.Layout
+
+ {c42d2fc1-a531-4ed4-84b9-89aec7c962fc}
+ Avalonia.Themes.Fluent
+
{eb582467-6abb-43a1-b052-e981ba910e3a}
Avalonia.Visuals
diff --git a/src/Android/Avalonia.Android/AndroidPlatform.cs b/src/Android/Avalonia.Android/AndroidPlatform.cs
index 5e11d8eab2..57f22e7a05 100644
--- a/src/Android/Avalonia.Android/AndroidPlatform.cs
+++ b/src/Android/Avalonia.Android/AndroidPlatform.cs
@@ -43,11 +43,12 @@ namespace Avalonia.Android
AvaloniaLocator.CurrentMutable
.Bind().ToTransient()
.Bind().ToTransient()
+ .Bind().ToConstant(new WindowingPlatformStub())
.Bind().ToSingleton()
.Bind().ToConstant(Instance)
.Bind().ToConstant(new AndroidThreadingInterface())
.Bind().ToTransient()
- .Bind().ToSingleton()
+ .Bind().ToSingleton()
.Bind().ToConstant(new ChoreographerTimer())
.Bind().ToConstant(new RenderLoop())
.Bind().ToSingleton()
diff --git a/src/Android/Avalonia.Android/Stubs.cs b/src/Android/Avalonia.Android/Stubs.cs
new file mode 100644
index 0000000000..f36c01dbc8
--- /dev/null
+++ b/src/Android/Avalonia.Android/Stubs.cs
@@ -0,0 +1,56 @@
+using System;
+using System.IO;
+using Avalonia.Platform;
+
+namespace Avalonia.Android
+{
+ class WindowingPlatformStub : IWindowingPlatform
+ {
+ public IWindowImpl CreateWindow() => throw new NotSupportedException();
+
+ public IWindowImpl CreateEmbeddableWindow() => throw new NotSupportedException();
+
+ public ITrayIconImpl CreateTrayIcon() => null;
+ }
+
+ class PlatformIconLoaderStub : IPlatformIconLoader
+ {
+ public IWindowIconImpl LoadIcon(IBitmapImpl bitmap)
+ {
+ using (var stream = new MemoryStream())
+ {
+ bitmap.Save(stream);
+ return LoadIcon(stream);
+ }
+ }
+
+ public IWindowIconImpl LoadIcon(Stream stream)
+ {
+ var ms = new MemoryStream();
+ stream.CopyTo(ms);
+ return new IconStub(ms);
+ }
+
+ public IWindowIconImpl LoadIcon(string fileName)
+ {
+ using (var file = File.Open(fileName, FileMode.Open))
+ return LoadIcon(file);
+ }
+ }
+
+ public class IconStub : IWindowIconImpl
+ {
+ private readonly MemoryStream _ms;
+
+ public IconStub(MemoryStream stream)
+ {
+ _ms = stream;
+ }
+
+ public void Save(Stream outputStream)
+ {
+ _ms.Position = 0;
+ _ms.CopyTo(outputStream);
+ }
+ }
+}