Если хочется стать именно мобильным разработчиком, то ответ очевиден: надо выбрать любую из нативных сред разработки и налегать на Objective-C/Swift для iOS или Java/Kotlin для Android. В этом случае к вашим услугам все возможности системы, можно управлять практически каждым нюансом.

Если есть просто желание написать программу, которая будет работать в том числе и на телефонах, то можно сильно не задумываться и выбрать то, к чему больше лежит душа или в чём есть какой-то заметный опыт: C++, React Native, Xamarin или пятьсот тысяч JS-фреймворков для кроссплатформенной разработки. Или вообще продолжить делать свои [адаптивные] веб-сайты.

Я, признаться, довольно скептически отношусь к самой идее кроссплатформенной разработки на таких разных (и расходящихся) платформах, как Android и iOS. Никто из вендоров не любит «неверных» разработчиков, пытающихся усидеть на двух стульях одновременно. Все пытаются привязать программистов к инструментам и окружению, и никакой тенденции к сближению в обозримом будущем ожидать не приходится. Что там говорить, Apple в этой гонке отказался даже от OpenGL, самой кроссплатформенной из всех библиотек после Curl, но зато теперь у них есть свой собственный Metal, который делает вроде бы то же самое, только лучше и другим языком.

С другой стороны, очень часто мобильная разработка — это создание двух выглядящих одинаково приложений для какого-нибудь сетевого сервиса. Заказчики не всегда готовы платить за два продукта, которые на вид совершенно неотличимы, поэтому спрос на технологии кроссплатформенной разработки существует и, надо признать, довольно высокий. Программисты тоже не прочь сэкономить, особенно если мобильное приложение продать хочется, учить Swift/Kotlin никакого желания нет, зато JS/C# уже есть на кончиках пальцев.

Разумеется, кроссплатформенная разработка несёт с собой массу неочевидных нюансов. Все универсальные решения вынуждены строить замки на песке: либо опираясь на сложные и хрупкие технологические решения (как Xamarin), либо на мобильные движки JavaScript, как React Native. При этом платформенные вендоры и не думают поддерживать ни одно из решений, и каждое обновление нативного SDK — большая головная боль для любого кроссплатформенного фреймворка. Не говоря уже о таких специфических для конкретной системы особенностях, как доступ к камере, кейчейну или даже банальной галерее фотографий, которые каждый пытается обходить с разной степенью успешности. Разработчики, выбравшие универсальный путь, оказываются в заложниках у своего фреймворка, и часто разработка, обещавшая существенную экономию, превращается в борьбу с граблями.

Также часто в кроссплатформенных решениях принято жертвовать тем, что обозначается термином user experience (UX): многие фреймворки пытаются использовать элементы управления, максимально обобщенные для обеих систем, и почти всегда это решение одинаково неудобно для всех. Или тормозит. Или выбивается из общего стиля. Или расходует батарейку. Продолжите список сами.

Особняком стоят кроссплатформенные приложения, ядра которых пишутся на низком уровне, максимально общем для всех операционных систем: на языках типа C/С++. В этом случае принято обобщать использование кода, обслуживающего бизнес-логику, а интерфейс пишется для каждой платформы отдельно. В идеале можно было бы избежать дублирования критически важной части приложения, и при этом сохранить пользовательский опыт, характерный для каждой платформы. Однако в реальной жизни всё сложнее. Например, Dropbox несколько лет подряд пытались жить с низкоуровневым ядром, но в итоге отказались по многим причинам, и теперь счастливы с нативными платформенными приложениями. Интересующихся отсылаю к любопытной их статье на эту тему.

По моему мнению, экономия на кроссплатформенных фреймворках всегда иллюзорна. Наверное, в некоторых тривиальных проектах, где приложение — это просто версия основного сайта, супер-оптимизированная для мобилки, обобщенный подход работает. В остальных случаях вы рискуете повторить судьбу Dropbox. Мой совет — если хотите быть мобильным девелопером, вкладывайте усилия в изучение платформы. Они всегда окупятся, даже если вам придётся участвовать в кроссплатформенном проекте.