Подтвердить что ты не робот

React Native & Android?

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

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

4b9b3361

Ответ 1

TLDR: Скорее всего, вы можете. Но это зависит от ваших вариантов использования.

Вы можете стремиться к 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+% повторное использование кода все еще является большим улучшением по сравнению с поддержкой двух совершенно разных версий: Android и iOS, да?)

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

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

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

Еще одно большое преимущество заключается в том, что можно быстро нажимать на код, не проходя адский процесс просмотра в магазине в течение 1 недели. Так что не надо больше: "ДА, наше приложение одобрено. Пусть выпустят. О, Шииит. Критическая ошибка, и наше приложение продолжает падать (это будет происходить в течение, по крайней мере, недели, прежде чем будет исправлено ваше исправление). И вы должны попросить Apple ускорить работу. до процесса ". Это возможно потому, что основная часть кодовой базы будет написана на JS, и с помощью таких инструментов, как AppHub или CodePush, вы можете почти мгновенно развернуть код для своих пользователей. Это условно разрешено Apple.

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

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


ОБНОВЛЕНИЕ 1

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

ОБНОВЛЕНИЕ 2 Релиз приложения для конференции Facebook F8 от Facebook (duh..) на 100% с открытым исходным кодом, и у них есть действительно хороший учебник, который покажет вам, как вы можете использовать both как для iOS, так и для Android (на 90% лучше родной?), и в то же время достиг 85% повторного использования кода. проверить это → https://makeitopen.com

ОБНОВЛЕНИЕ 3 Вы также можете проверить Flutter и его плюсы & минусы :)

Ответ 2

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

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

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

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

Ответ 3

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

Ответ 4

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

Ответ 5

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

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

Ответ 6

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

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

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

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

Ответ 7

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

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

надеюсь, что это поможет.

Ответ 8

Reaction-native преобразует ваш код, написанный на JavaScript, в собственные коды, и вам не нужно писать отдельные коды для android и ios platforms. Но это не на 100% верно, и в некоторых случаях вам приходится писать разные коды для двух платформ. В качестве простого примера, когда вы хотите присвоить shadow тег HTML для ios, он работает, но когда вы запускаете этот код на эмуляторе Android или на устройстве, вы видите, что у вас нет тени. В этом случае для платформы Android вам нужно использовать elevation вместо shadow.