Réagir Natif Et Android?

J'envisage D'utiliser React Native pour une nouvelle application web. Est-il possible d'expédier à la fois des applications iOS et Android en utilisant?

Je sais que c'est sur la feuille de route, mais je ne sais pas si ce sera un projet open-source séparé (par exemple, React Android vs React Native), ou juste un (par exemple, React Native).

34
demandé sur williamle8300 2015-07-08 18:33:32

7 réponses

Vous pouvez viser environ 80 ~ 99 + % (en fonction de la quantité de vues/modules natifs Android/iOS que vous utilisez, par exemple. Avez-vous un code graphique personnalisé ou un code réseau TCP de bas niveau; ceux-ci ne peuvent être effectués qu'en code natif; et exposer en tant QU'API à votre code JS. La quantité de code JS spécifique à la plate-forme est en fait minime. De plus, vous pouvez également utiliser la vérification de la plate-forme comme if (Platform.OS === 'android'){} pour résoudre cela) de la réutilisation du code, ce qui est assez agréable. Dropbox et d'autres entreprises ont fait un projet similaire: utiliser c++ pour construire un "partagé" composant entre le projet iOS et Android, tout en implémentant la plupart du code de L'interface utilisateur dans iOS natif (Objective - C ou swift) et Android (java). Mais maintenant, vous faites C++ avec Java et ObjectiveC ou Swift, plus de langage à maîtriser, plus de complexité et plus de jus de cerveau est tombé dans le drain. Et il a probablement fallu un mouvement de gymnastique super difficile pour faire fonctionner le code natif différent dans iOS et Android, plus le débogage...

React Native rend simplement beaucoup plus facile d'écrire presque tout JavaScript . Mais il y a un hic, seulement environ 80% du code JS pourrait être partagé. Dans un avenir prévisible, vous devez toujours écrire du code JS "spécifique à la plate-forme" pour la version Android et iOS.

C'est pourquoi FB a dit qu'ils visaient 'Apprendre une fois, code n'importe où' au lieu de 'courir' partout.

Mais c'est toujours très agréable autre que la réutilisation du code (80 + % de réutilisation du code est toujours une grande amélioration par rapport au maintien de 2 versions entièrement différentes: Android et iOS ya?)

Cmd + R pour rafraîchir l'application est un grand coup de pouce pour la vitesse de développement. en attendant un gros projet pour compiler juste vous faire sentir que vous étiez en train de mourir à l'intérieur ..

Interface utilisateur déclarative que vous obtenez gratuitement, car en utilisant React. Ceci est un autre grand plus! comme vous n'avez plus besoin de "creuser" dans votre code D'interface utilisateur spécifique. Les données modifiées? Juste "flush" et L'interface utilisateur juste mettre à jour en conséquence. Pas de jus de cerveau gaspillé.

Je juste porté mon Android pas si compliqué React application Native à iOS . Et il m'a fallu 3 jours. La demande et la version iOS pour l'application est venu comme un mouvement plutôt brusque et imprévu. Donc, pourrait certainement être encore plus rapide si j'avais construit L'Android avec un plan pour iOS aussi. énorme victoire:)

Un autre grand avantage est en mesure de faire hot code push sans passer par le processus infernal 1 semaine App store examen. Donc pas plus, " YAY, notre application est approuvée. Laisser en liberté. Oh Shiiit. Bug critique et notre application conserve s'écraser(cela va continuer à se produire pendant au moins une semaine avant que votre correctif soit en direct). Et vous devez Supplier Apple d'accélérer le processus". Ceci est possible parce que la majeure partie de la base de code serait écrite en JS et avec des outils comme AppHub ou CodePush, vous pourriez presque instantanément déployer du code à vos utilisateurs. C'est conditionnellement autorisé par Apple.

3.3.2 une Application ne peut pas télécharger ou installer de code exécutable. Le code interprété ne peut être utilisé dans une Application si tous les scripts, le code et les interprètes sont empaquetés dans l'Application et non téléchargés. La seule exception à ce qui précède concerne les scripts et le code téléchargés et exécutés par le framework WebKit intégré D'Apple, à condition que ces scripts et ce code ne modifient pas l'objectif principal de l'Application en fournissant des fonctionnalités incompatibles avec l'objectif prévu et annoncé de l'Application tel que soumis à L'App Store.

Enfin, comme un projet open source, longévité du projet tend à être une préoccupation. Pas un problème pour Réagir Natif. Utilisé en interne par (FB Ads Manager) et soutenu par FB(une douzaine D'ingénieurs FB?) par Facebook, avec près de 500 contributeurs et 25k étoiles , React Native est plein de live. Voir, c'est croire :) ( https://github.com/facebook/react-native )


Modifier

Je me suis rendu compte que je suis apparemment un peu biaisé et que je ne parlais que des bonnes choses à propos Réagir Natif. Alors faites la caisse https://productpains.com/product/react-native/{[35] } et les problèmes de Github pour avoir une image complète. C'est certainement pas de solution miracle. Cela étant dit, il satisfait la plupart de mon cas d'utilisation et je ne pouvais pas me voir Utiliser iOS natif ou Android de sitôt.

Modifier Le facebook facebook F8 conférence app libération par Facebook (duh..) est 100% open source et ils ont un tutoriel vraiment sympa pour vous montrer comment vous pourriez avoir à la fois iOS et Android natif expérience (90% aussi bon que natif ?), et en même temps, atteint 85% de réutilisation du code. Regarde ça --> https://makeitopen.com

45
répondu noooooooob 2016-09-20 13:52:32

Cela n'a pas de sens d'avoir une seule base de code si vous voulez une expérience vraiment native. En ce moment, nous avons des choses comme NavigatorIOS dans React Native qui fournit une interface utilisateur de style iOS pour naviguer entre les écrans d'applications, mais si nous devions simplement commencer à l'utiliser sur Android, cela ne ressemblerait pas à une véritable application Android.

Par conséquent, je m'attends à voir un composant NavigatorAndroid ou similaire le moment venu, et la même chose pour divers autres composants qui se comportent différemment entre le plate.

Un avantage que vous obtiendrez est que toute logique d'application-peut - être un magasin, ou vos interactions backend-pourrait être écrit dans un fichier JavaScript, puis inclus par iOS et Android.

Donc, alors que vous n'obtiendrez pas cette expérience de développeur write-once run-everywhere de React Native, Je m'attendrais à voir une solution qui donne une interface utilisateur de première classe sur les deux plates-formes tout en encourageant autant de réutilisation que possible. Personnellement, j'espère aussi voir des outils de construction solides pour aider développer et Expédier sur plusieurs plates-formes.

19
répondu Colin Ramsay 2015-07-08 15:56:29

React Native pour Android vient d'être publié, le dossier Android va créer à côté du dossier iOS lors de la création d'un nouveau projet.

8
répondu Ivan Foong 2015-09-15 06:05:31

Juste une autre astuce comme NavigatorIOS a été mentionné. Facebook ne sont pas vraiment maintenir le code pour NavigatorIOS. Au lieu de cela, ils se concentrent sur Navigateur.

5
répondu eyal83 2015-07-20 15:12:25

Oui. Nous l'exécutons en production avec environ 5 millions d'utilisateurs enregistrés.

Certaines choses sont un peu en retard sur iOS mais rattrapent rapidement. C'est un bon wagon pour être sur.

5
répondu Ped 2016-12-30 15:02:24

React Native est conçu pour que vous puissiez déployer à la fois sur iOS et Android. Il y a une mise en garde, bien sûr.

React Native a pris en charge iOS pour beaucoup plus longtemps, à venir à Android que récemment. Donc, il y a quelques différences en termes de ce qui est pris en charge sur chaque plate-forme.

Par exemple, si vous placez des bordures sur du texte, elles apparaîtront sur iOS, mais pas sur Android. Pour surmonter cela, vous devez placer une vue autour du texte et y appliquer une bordure. Heureusement, Réagir Native permet d'intégrer facilement des feuilles de style distinctes pour chaque plate-forme (ou même un style spécifique à la plate-forme sur une seule feuille de style).

La prise en charge D'Android évolue continuellement, ce ne sera donc qu'une question de temps avant que React Native pour Android ne soit à égalité avec iOS. Néanmoins, cela ne devrait pas vous dissuader. D'après mon expérience, c'est un excellent moyen de développer rapidement pour les deux plates-formes, et cela permet d'économiser quelques maux de tête.

2
répondu Kris Laratta 2016-04-22 15:07:46

Vous n'avez pas besoin de maintenir une base de code séparée pour android et ios. En fait, vous pouvez utiliser la même base de code pour construire android et ios. Je recommande de lire la documentation react-native (selon la version react-native que vous utilisez) avant d'utiliser un composant intégré dans votre code. Par exemple: - TextInput composant la fonction OnKeyPress prend en charge pour ios uniquement.

Si vous utilisez lib externe, vérifiez le support de lib pour ios et android. Quoi qu'il en soit vous devez configurer lib externe séparément (installer) à la fois android et ios.

J'espère que cela sera utile.

1
répondu Janaka Pushpakumara 2016-12-17 15:38:09