Составление подробного отчёта о поддержке пяти популярных операционных систем (Windows, Linux, macOS, iOS, Android) технологиями React Native и Flutter - не тот объём работы, который можно просить делать забесплатно, поэтому большую часть работы я проделал сам, а Вас попрошу лишь добавить или исправить, если в приведённой ниже информации что-то не так.
## Важные моменты
### Единый исходный код на все дистрибутивы для каждой ОС
Когда говорится, что приложения на React Native или Flutter можно запускать, например, на macOS или Windows, то иногда имеется ввиду, что собранное приложение можно запускать только на одной из этих ОС, а если хочется на другой - то надо переписывать код и/или менять настройки сборки проекта. Здесь же речь идёт именно о том, чтобы
дистрибутивы для разных ОС одного и того же приложения собирались на основе единого исходного кода (проекта).
Кстати говоря, именно этот момент для меня пока остаётся наименее раскрытым, поэтому попрошу Вас написать, как обстоит дело со сборкой одного и того же проекта под разные ОС.
Я знаю, что некоторые модули придётся писать нативно под каждую ОС, тем не менее большая часть кода должна быть одна на все ОС.
### Запуск собранного приложения на конкретной ОС, а не его разработка на конкретной ОС
Часто когда вводишь запросы типа "React Native windows", поисковая система думает, что меня интересует написание кода в среде Windows, а не запуск приложения с среде Windows. Здесь же речь идёт именно о **запуске собранного приложения на каждой из перечисленных ОС**, а на какой ОС нужно при этом разрабатывать - это вторичный организационный момент.
### "Поддержка"
В данной теме, термин "поддержка" может употребляться как минимум в следующих значениях:
1 Возможность собирать дистрибутивы приложений для конкретной ОС
2 Периодическое исправление ошибок в коде и добавление кода нового функционала
Если употреблять этот термин в обоих значениях, может получиться тавтоловгия типа "Поддержка React Native больше не поддерживается". Поэтому в первом случае я буду употреблять термин "Портирование"
## Собственно, отчёт
### React Native
#### iOS, Android
Портирован из коробки. Насколько мне известно, изначально React Native поддерживал сборку дистрибутивов для обоих этих ОС. Информация о том,
как настроить среду разработки и собирать дистрибу... имеется на официальном сайте React Native.
#### Windows
Портирован. Скорее всего, это сделала Microsoft.
Информацию о том, как развернуть среду разработки для Windows и собрать приложение для этой ОС можно найти на
microsoft.github.io. Фреймворк Expo, похоже, либо не имеет возможности сборки дистрибутивов под Windows из коробки, либо эта возможность не документирована (
обсуждение).
Я не видел, чтобы однозначно было сказано, что сконфигурированный под сбоку для Windows проект мог собирать при этом для Android, iOS и других систем.
#### macOS
[Портирован и поддерживается](
https://github.com/microsoft/react-native-macos).
Репозиторий принадлежит Microsoft. Документация - [там же, где и для Windows](
https://microsoft.github.io/react-native-windows/d...).
Опять же, я не видел, чтобы было чётко сказано, что настройка проекта для сборки приложения под macOS не отнимает возможности собирать его под другие ОС.
#### Linux.
Официально заявлено, что React Native Ubuntu не поддерживается:
React Native Desktop - A project aiming to bring React Native to the Desktop with Qt's QML. A fork of React Native Ubuntu, which is no longer maintained.
Источник
Однако согласно [официальному репозиторию React Native Desktop](
https://github.com/status-im/react-native-desktop-qt), он также больше не поддерживается, в чём можно убедиться по осутствию пулл рикуестов больше года.
Разработчики Proton Native также заявили об отсутствии времени на поддержку проекта на [своём официальном репозитории](
https://github.com/kusti8/proton-native).
Итого: React Native портирован на Linux, но все связанные с этим проекты больше не поддерживаются, а потому по мере развития React и Linux рано или поздно придёт время, когда запуск React-native приложений на Linux станет невозможным.
#### Вывод по React Native
В рамках приведённой выше информации можно сказать, что написанное приложение на React Native можно собрать и запустить без проблем на всех ОС, кроме Linux.
### Flutter
В отличие от React Native, портированием Flutter на другие ОС занимается его же разработчик - Google.
Согласно данным официального сайта, Flutter 2.2 поддерживаем следующие платформы:
Platform Version Channels
Android API 19 & above All
iOS iOS 9 & above All
Linux Debian 10 & above All
macOS El Capitan & above All
Web Chrome 84 & above All
Web Firefox 72.0 & above All
Web Safari on El Capitan & above All
Web Edge 1.2.0 & above All
Windows Windows 7 & above All
Источник
Чётко и ясно
заявлено, какие платформы не поддерживаются:
Platform Version
Android Android SDK 15 & below
iOS iOS 8 & below
Windows Windows Vista & below
Windows Any 32-bit platform
macOS Yosemite & below
Вроде как все пять главных ОС поддерживаются, но беспокойство по-прежнему вызывает возможность собирать под все эти системы, а не под каку-то одну.