Вот короче всё-таки отзыв от моего знакомого в догонку, вдруг интересно будет :
Во-первых, Xamarin.Android именно что работает в рантайме Mono (в .NET 6 это должно измениться, кста). Это не тот же рантайм, что в .NET Core. Конечно, при использовании высокоуровневых API это незаметно, но нет никакой гарантии, что низкоуровневый код (включая подключаемые библиотеки, скажем, какой-нибудь математики) будет работать на андроиде так же, как на бэке. Более того, может оказаться, что API, определённое в .NET Standard, реализованное в .NET, не реализовано в Mono.
Во-вторых, Xamarin.Android работает не только в Mono, но и в ART (раньше был Dalivk, но это другая история), т.е. фактически в двух рантаймах. Надо ли говорить, что это негативно влияет на производительность? Но я расскажу детальнее. Часть объектов существует либо в одной среде выполнения, либо в другой - эта часть неинтересна. Интереснее peer-объекты, которые фактически существуют в обеих средах: такие объекты не могут быть собраны мусорщиком до тех пор, пока они не станут готовыми для этого в обеих средах. ИИИИ, барабанная дробь, отлаживать это, а в частности отыскивать утечки памяти - то ещё удовольствие. Xamarin Profiler (требующий VS Enterprise) показывает тебе ссылки в Mono, которые могут уходить в ART - и дальше тишина. Android Studio может показывать тебе ссылки на ART, но они могут уходить в Mono - и там тоже тишина... То же самое, кстати, про профилирование в плане производительности.
В-третьих, нет, в Xamarin.Android доступно далеко не всё, что предоставляет сам Android, а также библиотеки Java и Kotlin. Для того, чтобы ссылаться на Java-либы, тебе нужно xamarin bindings. В нугетах есть такие. Часть из них поддерживает команда Xamarin (в основном это анроидовые библиотеки, но там очень мало фич из джетпака - об этом ниже), часть из них сообщество. Но это реально очень малая часть.
Ты можешь сделать биндинг. И компилятор даже может успешно сгенерировать его. Правда ты теряешь документацию (я так и не смог с этим ничего сделать, даже если прикладывать к aar файлы с доками - на выходе xml-доков нет). А ещё ты получаешь отвратительное API, в котором всё построено на методах вместо свойств - привет джаве. А ещё перечисления превращаются в иерархию классов, нет событий и так далее, и так далее.
А ведь ещё автобиндинг может сфейлится! Он не очень умеет в internal, например. из-за чего ты будешь целый день курить исходники и прописывать в xml-файлах то, как тебе нужно конвертировать java в c#. А если ты захочешь обновить библиотеку, чтобы, скажем, подтянуть фикс. А там API поменялся. ММММ, наслаждение.
В-четвёртых, когда я писал своё мега-XF приложение, Xamarin не поддерживала библиотеки Android Jetpack. Сейчас с этим получше стало. Там появился Navigation component. paging library для recyclerview, data- и view binding. Но там, например, нет статичного DI Hilt (ну, хотя бы Dagger вроде есть, и то замечательно).
В-пятых, VS тупо сосёт. Дизайнер сосёт, подключение ассетов сосёт, работа с XML сосёт. Ну и работать с одинаково называющимися в BCL Java и C# классами - это отдельное удовольствие.