@Wylaroren

Какие из пяти операционных систем (Windows, Linux, macOS, Android, iOS) поддерживают React Native и Flutter на момент лета 2021?

Составление подробного отчёта о поддержке пяти популярных операционных систем (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


Вроде как все пять главных ОС поддерживаются, но беспокойство по-прежнему вызывает возможность собирать под все эти системы, а не под каку-то одну.
  • Вопрос задан
  • 493 просмотра
Пригласить эксперта
Ответы на вопрос 1
danial72
@danial72
flutter dart.
Ванильное приложение без плагинов, можно собрать для всех этих ос. Никаких проблем(не учитывая setup).
Дальше все зависит от плагинов, которые вы решите использовать
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы