diff --git a/Raylib-cs.Android/Raylib-cs.Android.csproj b/Raylib-cs.Android/Raylib-cs.Android.csproj
new file mode 100644
index 0000000..09525f5
--- /dev/null
+++ b/Raylib-cs.Android/Raylib-cs.Android.csproj
@@ -0,0 +1,15 @@
+
+
+
+ net6.0-android;net7.0-android
+ 21
+ Raylib_cs
+ enable
+ enable
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Raylib-cs.Android/RaylibActivity.cs b/Raylib-cs.Android/RaylibActivity.cs
new file mode 100644
index 0000000..14d7c54
--- /dev/null
+++ b/Raylib-cs.Android/RaylibActivity.cs
@@ -0,0 +1,17 @@
+using System.Runtime.InteropServices;
+
+namespace Raylib_cs;
+
+public abstract class RaylibActivity : NativeActivity
+{
+ protected override void OnCreate(Bundle? savedInstanceState)
+ {
+ base.OnCreate(savedInstanceState);
+ RaylibSetAndroidCallback(OnReady);
+ }
+
+ protected abstract void OnReady();
+
+ [DllImport(Raylib.NativeLibName, CallingConvention = CallingConvention.Cdecl)]
+ private static extern void RaylibSetAndroidCallback(Action callback);
+}
diff --git a/Raylib-cs.Android/android.patch b/Raylib-cs.Android/android.patch
new file mode 100644
index 0000000..6d70c48
--- /dev/null
+++ b/Raylib-cs.Android/android.patch
@@ -0,0 +1,27 @@
+diff --git a/src/rcore.c b/src/rcore.c
+index eae4951..4400b22 100644
+--- a/src/rcore.c
++++ b/src/rcore.c
+@@ -1,3 +1,22 @@
++#if defined (PLATFORM_ANDROID)
++#include
++
++typedef void (*RaylibAndroidCallback)();
++static RaylibAndroidCallback _androidCallback = NULL;
++
++void RaylibSetAndroidCallback(RaylibAndroidCallback callback) {
++ _androidCallback = callback;
++}
++
++int main(int argc, char *argv[]) {
++ (void)argc;
++ (void)argv;
++ while (_androidCallback == NULL) {
++ }
++ _androidCallback();
++}
++#endif
++
+ /**********************************************************************************************
+ *
+ * rcore - Basic functions to manage windows, OpenGL context and input on multiple platforms
diff --git a/Raylib-cs.Android/runtimes/android-arm/native/.keep b/Raylib-cs.Android/runtimes/android-arm/native/.keep
new file mode 100644
index 0000000..e69de29
diff --git a/Raylib-cs.Android/runtimes/android-arm64/native/.keep b/Raylib-cs.Android/runtimes/android-arm64/native/.keep
new file mode 100644
index 0000000..e69de29
diff --git a/Raylib-cs.Android/runtimes/android-x64/native/.keep b/Raylib-cs.Android/runtimes/android-x64/native/.keep
new file mode 100644
index 0000000..e69de29
diff --git a/Raylib-cs.Android/runtimes/android-x86/native/.keep b/Raylib-cs.Android/runtimes/android-x86/native/.keep
new file mode 100644
index 0000000..e69de29
diff --git a/Raylib-cs.sln b/Raylib-cs.sln
index 823188f..6e28f1f 100644
--- a/Raylib-cs.sln
+++ b/Raylib-cs.sln
@@ -7,6 +7,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Raylib-cs", "Raylib-cs\Rayl
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Raylib-cs.Tests", "Raylib-cs.Tests\Raylib-cs.Tests.csproj", "{523DEE6A-20CD-47AB-94A6-8D3C3CF9ADAD}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Raylib-cs.Android", "Raylib-cs.Android\Raylib-cs.Android.csproj", "{8C2B9C24-3926-4B3A-902C-6429CF4864AA}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -25,6 +27,18 @@ Global
{523DEE6A-20CD-47AB-94A6-8D3C3CF9ADAD}.Release|Any CPU.Build.0 = Release|Any CPU
{523DEE6A-20CD-47AB-94A6-8D3C3CF9ADAD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{523DEE6A-20CD-47AB-94A6-8D3C3CF9ADAD}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {8C2B9C24-3926-4B3A-902C-6429CF4864AA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {8C2B9C24-3926-4B3A-902C-6429CF4864AA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {8C2B9C24-3926-4B3A-902C-6429CF4864AA}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {8C2B9C24-3926-4B3A-902C-6429CF4864AA}.Debug|x64.Build.0 = Debug|Any CPU
+ {8C2B9C24-3926-4B3A-902C-6429CF4864AA}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {8C2B9C24-3926-4B3A-902C-6429CF4864AA}.Debug|x86.Build.0 = Debug|Any CPU
+ {8C2B9C24-3926-4B3A-902C-6429CF4864AA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {8C2B9C24-3926-4B3A-902C-6429CF4864AA}.Release|Any CPU.Build.0 = Release|Any CPU
+ {8C2B9C24-3926-4B3A-902C-6429CF4864AA}.Release|x64.ActiveCfg = Release|Any CPU
+ {8C2B9C24-3926-4B3A-902C-6429CF4864AA}.Release|x64.Build.0 = Release|Any CPU
+ {8C2B9C24-3926-4B3A-902C-6429CF4864AA}.Release|x86.ActiveCfg = Release|Any CPU
+ {8C2B9C24-3926-4B3A-902C-6429CF4864AA}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE