App Android Perso

[vc_row margin_top= »-30″ margin_bottom= »15″][vc_column offset= »vc_col-lg-8 vc_col-md-8 vc_col-xs-12″][vc_empty_space height= »40px »][vc_column_text] Trésors de Bretagne [/vc_column_text][vc_empty_space height= »16px »][vc_column_text]Petite application Android personnelle listant les monuments et lieux intéressants prêt de chez nous, en Bretagne. https://play.google.com/store/apps/details?id=fr.reactor.breizhmap[/vc_column_text][vc_empty_space height= »30px »][vc_column_text]Tâches effectuées :[/vc_column_text][vc_empty_space height= »16px »][vc_column_text][dt_list style= »1″ bullet_position= »top » dividers= »false »][dt_list_item image= » »]Conception/Design.[/dt_list_item][dt_list_item image= » »]Integration/Animation.[/dt_list_item][dt_list_item image= » »]Développement C# Xamarin.[/dt_list_item][dt_list_item image= » »]Lead dev/ops.[/dt_list_item][/dt_list][/vc_column_text][vc_empty_space height= »30px »][/vc_column][vc_column offset= »vc_col-lg-4 vc_col-md-4 vc_col-xs-12″][vc_empty_space height= »40px »][vc_column_text] Techniques [/vc_column_text][vc_empty_space height= »16px »][vc_progress_bar values= »%5B%7B%22label%22%3A%22D%C3%A9veloppement%20C%23%20Xamarin%20Android%22%2C%22value%22%3A%2290%22%7D%5D » options= »striped,animated » caption_pos= »top »][vc_empty_space height= »40px »][/vc_column][/vc_row]

Expo.io

Dans mon précédent article, j’expliquais comment je démarrais un projet React-Native classique. Il existe une nouvelle façon de créer une application avec « Create React Native App » et Expo.io. Create React Native App (CRNA): source : https://facebook.github.io/react-native/blog/2017/03/13/introducing-create-react-native-app.html $ npm i -g create-react-native-app $ create-react-native-app my-project $ cd my-project $ npm start Voici les fichier que l’on obtient après une installation (yarn) : On remarque qu’on ne voit plus les dossiers « android » et « ios » et  les fichiers « index.android.js » et « index.ios.js ». En effet, CRNA utilise expo.io Contenu du fichier App.js import React from ‘react’; import { StyleSheet, Text, View } from ‘react-native’; export default class App extends React.Component { render() { return ( <View style={styles.container}> <Text>Open up App.js to start working on your app!</Text> <Text>Changes you make will automatically reload.</Text> <Text>Shake your phone to open the developer menu.</Text> </View> ); } } const styles = StyleSheet.create({ container: { flex: 1, backgroundColor: ‘#fff’, alignItems: ‘center’, justifyContent: ‘center’, }, });   Expo Expo.io est un outil qui va nous permettre de développer une app avec React-Native et de se passer de XCode ou d’Android Studio. En effet expo fournit un sdk qui permet d’accéder au API native. Il fournit aussi un ensemble de service pour développer ses apps facilement. On remarque qu’ici on fait abstraction de la plateforme de développement (ios ou android) ce qui rend ce projet plus « portable » qu’avec l’ancienne méthode. On a donc un projet pure JS. source : https://docs.expo.io/versions/v17.0.0/index.html On peut directement passer par la CLI d’expo : (il existe aussi une version interface graphique téléchargeable) $ npm install exp –global $ exp init myprojectname liste des commandes exp : https://docs.expo.io/versions/v15.0.0/guides/exp-cli.html On aura alors un nouveau projet « blank » : On remarque l’ajout d’un dossier « assets » et d’un simple fichier main.js Contenu de mains.js import Expo from ‘expo’; import React from ‘react’; import { StyleSheet, Text, View } from ‘react-native’; class App extends React.Component { render() { return ( <View style={styles.container}> <Text>Open up main.js to start working on your app!</Text> </View> ); } } const styles = StyleSheet.create({ container: { flex: 1, backgroundColor: ‘#fff’, alignItems: ‘center’, justifyContent: ‘center’, }, }); Expo.registerRootComponent(App); La seule vraie différence avec CRNA c’est cette dernière ligne: Expo.registerRootComponent(App); Quick start : $ expo init myprojectname $ expo start La commande exp start lance un serveur et va exposer votre app sur 3 canaux (tunnel, localhost ou lan) De la même manière on peut passer par l’interface graphique pour lancer un serveur : Lorsque le serveur tourne vous pouvez alors lancer un emulateur ou l’app sur votre device. Soit en usb, soit via votre réseau : Tunnel (+ lent mais devrait fonctionner a tous les coups) Lan (votre device est sur le meme réseau que votre serveur) Localhost (USB ou emulateur local uniquement) Expo pour quoi faire ? Expo est un ensemble d’outil qui vont permettre de faciliter le développement d’application avec React Native. Il permet : le développement local (sans xCode ou Android studio) avec un serveur Expo le développement local avec déploiement distant (via l’application Expo sur Android/iOS) (similaire à Ionic) la publication/déploiement en production Comment ça marche ? source : https://docs.expo.io/versions/v17.0.0/guides/how-expo-works.html Lorsque l’on démarre un projet expo (sous XDE ou via la CLI), deux process serveur sont lancés : Expo Developement Server React Native Packager Server Expo Developement Server : Permet la communication entre XDE UI (ou CLI) et  l’app expo sur votre mobile ou simulator. Il fournit le manifest de l’app (config de l’app) React Native Packager Server : Si on lance directement un react-native start, expo se lancera alors pour vous et se « pipe » sur la sortie stdout (votre terminal). Il fait deux choses : il transpile du code JSX en code JS le tout en un seul fichier. il fournit les assets (images)   Conclusion Expo est un ensemble d’outils qui facilite le développement d’application React-Native. Il inclu des éléments supplémentaires à React-Native qu’il va falloir que j’explore. Cet outil est prometteur. A voir dans le temps.                            

React-Native by Reactor, my Setup

J’ai un nom de boite à la mode en ce moment. 🙂 J’ai dans mon précédent article abordé mon apprentissage avec React / React Native. Je vais tenter ici de créer from scratch une appli qui s’appelle BreizhTour. Setup VSCode VSTS J’utilise Visual Studio Code (VS Code) avec une petite liste d’extension : J’aime bien Atom One Dark Theme qui ajoute des configurations de couleurs dans le code. Celle par defaut n’est pas assez démarquante sur certaine syntaxe. J’ai installé l’extension : Visual Studio Team Services qui va me permettre de synchroniser un Git sur Azure. Il faut configurer VS Code (https://code.visualstudio.com/docs/editor/versioncontrol) J’ai créé en ligne sur VSTS un repo « BreizhTour » que j’ai cloné en local et ouvert avec VS Code. Vous allez avoir besoin d’un token, cette vidéo va vous aider. Pour valider le tout j’ai crée un fichier Readme.md avec un peu de texte que je commit et push. Je check online que le fichier est bien la. C’est bon on peut commencer.   Setup React-Native Si cela n’est pas déjà fait, une petite install de react-native : https://facebook.github.io/react-native/docs/getting-started.html Une petite commande cli dans mon dossier « Projets » : > react-native init BreizhTour Cela va créer mon projet de base : Setup ESLint ESLint est un outil qui permet d’améliorer la qualité de notre code javascript. Comme ce language est très permissif, on dérape facilement sur du code dégeux. Eslint permet de structurer le code d’une façon uniforme pour le projet. Tous les développeurs devront alors suivre les règles. Le code en est plus lisible. Et même dans mon cas ou je suis le seul développeur, EsLint m’aide beaucoup à coder propre. EsLint peut aussi aider à trouver certaines erreur de code, genre des erreurs bêtes de camelCase, des trucs d’humain quoi. Dans le cours que je suivais, j’utilisais une config en ligne « rallycoding ». npm install eslint-config-rallycoding –save-dev Ensuite je crée un fichier « .eslinrc » à la racine du projet avec ce contenu : {     « extends »: « rallycoding »,     « rules » : {         « arrow-body-style »: 0,         « max-len »: 0,         « import/no-named-as-default-member »: 0,     } } Refactoring de base Le code source de base fournit par React-Native ne me convient pas en l’état, je vais l’améliorer en modifiant quelque peu : Déjà on va modifier les deux fichiers à la racine que sont index.android.js et index.ios.js avec ce code : import { AppRegistry } from ‘react-native’; import App from ‘./src/App’; AppRegistry.registerComponent(‘BreizhTour’, () => App); Adapter « BreizhTour » avec le nom de repertoire de votre projet. On va créer ensuite un nouveau répertoire « src » que l’on place à la racine. A partir de maintenant tout le code ira dans ce répertoire. On va créer deux fichiers : App.js et Router.js App.js : import React, { Component } from ‘react’; import Router from ‘./Router’; class App extends Component { render() { return ( <Router /> ); } } export default App; Router.js import React from ‘react’; import { Scene, Router, Actions } from ‘react-native-router-flux’; import Main from ‘./components/Main’; const RouterComponent = () => { return ( <Router sceneStyle={{ paddingTop: 65 }}> <Scene key= »main » component={Main} title= »Breizh Tour » /> </Router> ); }; export default RouterComponent; Comme vous le voyez le router.js utilise une dépendance qu’il faut installer : > npm install –save react-native-router-flux Le router affiche une scène de base que l’on a appelé main. Il faut créer ce premier composant. Pour cela on va créer un répertoire « components » et ajouter notre première « page ». Et on y ajoute un composant Main.js import React, { Component } from ‘react’; import { View } from ‘react-native’; class Main extends Component { render() { return ( <View /> ); } } export default Main;   Run On lance un build et un run dans l’émulateur ou sur le device : react-native run-android Et voila ! Normalement on a notre premier écran qui s’affiche.   Conclusion Ici je vous montre comment je démarre un projet react-native. C’est juste ma façon de faire, yen a plein d’autre et vu mon expérience pour le moment je prétends pas donner la solution universelle. Mais déjà on a : un IDE prêt à coder, avec les outils qui vont bien du code versionné avec Git sous VSTS une base projet react-native avec un routeur (navigation) J’oublie pas de faire mon petit commit push. Et en avant Guingamp !  

React & React-Native

Hello, back on my blog. Ça faisait un moment que je n’avais pas rédigé un article. J’avais du boulot, du coup pas trop le temps de m’investir sur de nouveaux projets. Mais la, depuis qq jours, j’ai du temps libre que j’utilise pour me former sur React et React-Native. Comme d’habitude je vais rédiger un article qui va m’aider plus tard, une sorte d’aide mémoire. C’est ma technique, je note des infos sur un fichier. txt, ensuite quand j’ai besoin d’illustrer je rédige un article. Cela me permet de me (re)poser des questions et d’approfondir certain point. Le fait de rédiger un article me force à être plus consciencieux et me pousse aussi à vérifier certaine définition, comprendre certain mécanisme etc… Bref le fait de rédiger un article fait partie aussi de ma formation. Ici je vais présenter ma démarche de formation et quelques notes d’apprentissage. Vous y trouverez peut être qq tuyaux pour bien démarrer. Présentation de React : Je ne vais pas vous réciter un copier coller du net, chercher par vous même. Pour moi React est une surcouche JS, un framework de présentation qui se situe entre le JS et le HTML de votre page web. Il y a une grosse tambouille de code dont je n’ai aucune connaissance qui fait tout un tas de truc sympas ou pas avec votre page web. Toujours est il que j’ai trouvé ma première approche de React fort sympatique. Fin 2015,  je m’étais collé sur Angular (1) et ma courbe d’apprentissage n’était pas fulgurante. Mais avec React je me suis senti plus à l’aise. J’ai retrouvé des concepts familier aux apps mobile/desktop native, à savoir un cycle de vie. Votre app web avec React à un cycle de vie ! C’est à dire que vous pouvez lui dire par exemple « avant le Render, fait moi cette opération ». Donc votre app web vie comme une app classique. Le concept de composant m’a tout de suite plu. En effet, vous allez créer ce que React appelle à juste titre « Component ». Ça aurait pu s’appeler « module », « baliseHTMLduFutur », « machinquifaituntruc ». D’ailleurs c’est son but, créer un peu tout et n’importe quoi. Par exemple vous pouvez créer un component « Header » qui peut être rappelé plusieurs fois n’importe ou dans le code. C’est développé une fois et réutilisé dans le code comme une base HTML classique. D’ailleurs je parlais d’un framework qui se situe entre le js et le HTML. Ba du coup on va parler de JSX. C’est du javascript qui génère du code HTML. On aura donc une phase « transpilation ». Comme le dit si bien cette page : https://facebook.github.io/react/docs/introducing-jsx.html, ceci : const element = <h1>Hello, world!</h1>; est du JSX. C’est du JS qui comporte du HTML. Du coup on peut lui balancer aussi du CSS pour styliser le rendu. Donc grâce à React, on va pouvoir réaliser nos propres composant du futur. Bienvenu à Tambouille-Land ! React est crée par Facebook et Instagram et utilisé sur leurs pages. Donc c’est rassurant. Présentation de React-Native : J’avoue que l’intérêt pour moi était avant tout React-Native. Je suis développeur web et mobile (Android et Windows). Depuis maintenant un paquet d’année, je me pose et repose la question « est ce qu’il y aurait un moyen de coder une fois et de déployer sur Android et iOS avec ce même code ». J’ai testé Cordova, PhoneGap, Ionic (c’est la raison pour laquelle j’ai appris à codé sur Angular) donc des solutions Hybrides intéressantes mais pas parfaite. J’ai aussi en 2016 basé une bonne partie de ma formation sur Xamarin (C#). C’est une autre approche quasi native mais avec un seul langage et du XAML pour la couche de présentation. La version Xamarins Forms permet de faire une seule couche de présentation mixte (android et iOS) avec un rendu natif. Dans toutes ces solutions l’apprentissage est relativement long. Et au bout du compte franchement, je me demande si le pure natif n’est pas la vraie solution (au moins ça marche !). Personne n’a la réponse aujourd’hui, y’a pas de solution miracle. Mais bon, étant curieux par nature, je devais de me faire ma propre opinion sur React-Native. Et tant que j’ai pas sorti une app officielle dans un store, avec toutes les contraintes d’un projet (gestion, déploiement, tests, retour client, debug, etc…) je n’ai pas un avis suffisamment éclairé. Enfin c’est ma vision. Donc React-Native c’est React pour faire des app natives Android et iOS. (pas de Windows à ma connaissance). C’est un framework hybride car on va coder en JS et on aura une transpilation de code vers les plateforme cible android et ios. React va ici non pas générer du HTML mais de des composants natif. D’où le nom React-Native. le code de tout à l’heure pourra alors s’écrire : const element = <Text>Hello, world!</Text>; Où la balise <Text> va correspondre à un élément propre à la plateforme cible une fois transpilé et compilé. Car oui, ya un moment ou va bien falloir sortir un apk pour android. (pas encore testé sous iOS à l’heure ou j’écris cet article). Pour le style, on va utilisé qq chose proche du CSS (flexbox étant utilisé pour le layout). Ici j’ai personnellement un gros point noir à placer. Pour avoir peu testé, j’ai déjà rencontré de grosse difficulté de layout. Donc pour un framework dit de présentation, on retombe dans des travers peu enviable. A voir avec un peu plus d’entrainement.   Apprentissage : J’ai suivis deux cours (pour le moment) sur Udemy sur React.js https://www.udemy.com/reactjs-pour-les-debutants/learn/v4/overview histoire d’avoir qq base sur React web, puis ce cours : https://www.udemy.com/the-complete-react-native-and-redux-course L’auteur de ce dernier cours (Stephen Grider) est un développeur californien (speak english donc). Ce cours est particulièrement bien fait et nous amène petit à petit à comprendre des éléments clés de la construction d’application avec Reac-Native. On commence avec une simple appli pure React-Native, histoire d’apprendre les fondamentaux. Ensuite on construit une app avec une base de données online (Firebase) et un système d’authentification simple. Déjà c’est pas mal ! Ensuite il nous…