React Native & Android?

Я размышляю об использовании React Native для нового веб-приложения. Можно ли использовать как iOS, так и Android-приложения?

Я знаю, что это в дорожной карте, но мне непонятно, будет ли это отдельный проект с открытым исходным кодом (например, React Android vs React Native) или только один (например, React Native).

Solutions Collecting From Web of "React Native & Android?"

Вы можете ориентироваться на 80 ~ 99 +% (в зависимости от того, сколько пользовательских видов / модулей Android / iOS вы используете, например, у вас есть пользовательский графический код или сетевой код с низким уровнем TCP, которые могут выполняться только в собственном коде; Как API для вашего JS-кода. Количество конкретного JS-кода на платформе фактически минимально. Кроме того, вы также можете использовать проверку платформы, как if (Platform.OS === 'android'){} для решения этой проблемы) повторного использования кода, что Довольно приятно. Dropbox и другие компании выполнили аналогичный проект: используя c ++ для создания «общего» компонента между проектом iOS и Android, в то время как реализовать большую часть кода пользовательского интерфейса в родной iOS (Objective-c или Swift) и Android (java). Но теперь вы делаете C ++ с Java и ObjectiveC или Swift, больше языка для освоения, большей сложности и большего количества сока головного мозга. И это, вероятно, потребовало некоторого сверхпрочного гимнастического перехода, чтобы заставить работать на другом родном коде как в iOS, так и в Android, а также отлаживать …

React Native просто упрощает запись почти всего в JavaScript . Но есть улов, только около 80% кода JS могут быть разделены. В обозримом будущем вам все равно нужно написать JS-код для конкретной платформы для Android и iOS.

Вот почему FB сказал, что они нацелены на «Учиться один раз, код где угодно», а не «бегать» повсюду.

Но это все еще очень приятно, кроме повторного использования кода (повторное использование кода 80 +% по-прежнему является большим улучшением по сравнению с поддержкой 2 совершенно разных версий: Android и iOS ya?)

Cmd + R для обновления приложения – БОЛЬШОЕ повышение скорости разработки. Ожидание большого проекта для компиляции просто заставит вас почувствовать, что вы умираете внутри.

Декларативный пользовательский интерфейс вы получаете бесплатно, потому что используете React. Это еще один отличный плюс! Так как вам больше не нужно «копаться» в вашем конкретном коде пользовательского интерфейса. Изменены данные? Просто «промойте» его, и пользовательский интерфейс просто обновится соответствующим образом. Никакого мозгового сока не пропало.

Я просто портировал не очень сложное приложение Android React Native для iOS . И мне потребовалось 3 дня . Запрос и версия для iOS для приложения стали довольно резким и незапланированным шагом. Так что определенно можно было бы еще быстрее, если бы я построил Android с планом iOS. Огромная победа 🙂

Еще одно большое преимущество – это возможность делать горячий код без прохождения адского процесса проверки магазина приложений на неделю. Итак, не больше, «YAY, наше приложение одобрено. Давайте выпустим Oh Shiiit. Критическая ошибка и наше приложение продолжают падать (это будет продолжаться, по крайней мере, за неделю до того, как ваше исправление будет живым). И вы должны попросить Apple ускорить Процесс ». Это возможно, потому что большая часть базы кода будет записана в JS и с такими инструментами, как AppHub или CodePush , вы почти мгновенно сможете развернуть код для своих пользователей. Это условно разрешено Apple.

3.3.2 Приложение не может загрузить или установить исполняемый код. Интерпретированный код может использоваться только в приложении, если все сценарии, коды и интерпретаторы упакованы в приложение и не загружаются. Единственное исключение из вышеизложенного – это сценарии и код, загруженные и выполняемые встроенной инфраструктурой WebKit от Apple, при условии, что такие сценарии и код не меняют основной цели приложения, предоставляя функции или функции, которые не соответствуют намеченной и рекламируемой цели Приложения, представленного в App Store.

Наконец, как проект с открытым исходным кодом, долговечность проекта имеет тенденцию вызывать беспокойство. Не проблема для React Native. Внутренне используемый (FB Ads Manager) и поддерживаемый FB (дюжина инженеров FB?) Facebook, около 500 участников и 25 тысяч звезд , React Native полон жизни. Видеть – это верить 🙂 ( https://github.com/facebook/react-native )


РЕДАКТИРОВАТЬ

Я понял, что я, по-видимому, немного предвзятый, и только говорил о хороших вещах об React Native. Так что вы можете просмотреть https://productpains.com/product/react-native/ и вопросы Github, чтобы иметь полную картину. Это определенно не серебряная пуля . Это, как говорится, удовлетворяет большинству моих вариантов использования, и я не мог видеть, что я использую родной iOS или Android в ближайшее время.

EDIT Выпуск приложения для конференции Facebook F8 от Facebook (duh ..) является открытым исходным кодом на 100%, и у них есть действительно хороший учебник, чтобы показать вам, как вы могли бы иметь опыт работы с iOS и Android (на 90% лучше, чем у местных?), И В то же время, достигли 85% повторного использования кода. Проверить это -> https://makeitopen.com

Не имеет смысла иметь одну кодовую базу, если вы хотите по-настоящему родной опыт. На данный момент у нас есть такие вещи, как NavigatorIOS в React Native, который предоставляет интерфейс iOS в стиле навигации для экранов приложений, но если мы просто начнем использовать его на Android, он не будет похож на истинное приложение для Android.

Поэтому я ожидаю увидеть компонент NavigatorAndroid или аналогичный, когда придет время, и то же самое для других других компонентов, которые ведут себя по-разному между платформами.

Одно из преимуществ, которое вы получите, – это то, что любая логика приложения – возможно, хранилище или ваши взаимодействия с бэкэнд – может быть написана в файле JavaScript, а затем включена как iOS, так и Android.

Поэтому, пока вы не получите опыт работы с разработчиками из React Native, который будет работать один раз, я ожидаю увидеть решение, которое дает первоклассный интерфейс на обеих платформах, одновременно поощряя как можно больше повторного использования. Я лично также надеюсь увидеть сильные инструменты сборки, которые помогут разрабатывать и отправлять на нескольких платформах.

React Native для Android только что был выпущен, папка Android будет создавать вместе с папкой iOS при создании нового проекта.

Был упомянут еще один совет, как NavigatorIOS. Facebook не поддерживает код для NavigatorIOS. Вместо этого они фокусируются на Navigator.

Да. Мы запускаем его в производстве около 5 млн зарегистрированных пользователей.

Некоторые вещи немного отстают от iOS, но быстро догоняют. Это хороший универсал.

React Native спроектирован так, чтобы вы могли развертывать как iOS, так и Android. Конечно, есть предостережение.

React Native поддерживала iOS намного дольше, а на Android появилась совсем недавно. Таким образом, существуют некоторые различия в отношении того, что поддерживается на каждой платформе.

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

Поддержка Android постоянно развивается, поэтому это будет только вопрос времени, прежде чем React Native для Android будет наравне с iOS. Тем не менее, это не должно мешать вам. По моему опыту, это отличный способ быстро развиваться для обеих платформ, и это избавляет от некоторых головных болей.

Вам не нужно поддерживать отдельную базу кода для android & ios. На самом деле вы можете использовать ту же базу кода для сборки android & ios. Я рекомендую прочитать документацию, относящуюся к реакции (в соответствии с используемой версией action-action), прежде чем использовать какой-либо встроенный компонент в вашем коде. Например: – компонент TextInput onKeyPress поддерживает только ios.

Если ур использует внешнюю библиотеку, проверьте эту поддержку lib как для ios, так и для android. В любом случае вам нужно настроить внешнюю библиотеку отдельно (установить) как android, так и ios.

Надеюсь, это будет полезно.