React Native 로 Mobile App 개발하기

in #kr6 years ago

스크린샷 2018-03-29 오후 11.56.31.png


저는 Native Mobile App 개발을 경험해보지 못했습니다. 굳이 구분하자면 Web 개발자라고 하는 편이 맞을 것 같아요. 가끔 저도 멋진 Mobile App 을 만들어보고 싶다는 생각을 합니다. 요즘은 어쨋든 Mobile 이 대세니까요. 그러던 중 이녀석을 알게 되었습니다.

React Native



React Native 는 Facebook 에서 만든 Mobile App 개발을 위한 라이브러리 입니다. Facebook 은 정말 대단합니다. (저는 사용하지 않는 서비스지만요 ㅎㅎ)

React Native 는 Javascript 와 React 만을 사용해서 안드로이드와 IOS 모바일 앱을 한꺼번에 개발할 수 있게 합니다. 멋지지 않습니까? 저처럼 두 가지 환경을 각각 공부할 엄두가 나지 않는 사람에겐 아주 안성맞춤 솔루션인 것이죠 !!

Reference Page에 방문해보면 아래 4가지 특성을 강조하고 있습니다.

  • Build native mobile apps using JavaScript and React
  • A React Native app is a real mobile app
  • Don't waste time recompiling
  • Use native code when you need to

Javascript + React 로 Mobile Web App 이나 Hybrid App 이 아닌 Native App 을 개발할 수 있고 Hot Reloading 을 지원하며 필요한 때는 Native Code 를 사용할 수 있다는 것이죠.

React Native reference page : https://facebook.github.io/react-native

자 그럼 이제 App 을 개발해봅시다. Let's coding !!

이 아니라 일단 개발환경을 구축 해봅시다 ㅋ 참고로 저는 mac 을 사용합니다.

> brew install node
> brew install watchman


homebrew 가 설치되어 있지 않다면 homebrew 를 먼저 설치합니다. brew 는 mac 의 패키지 관리툴로 React Native 개발환경 때문이 아니더라도 사용하시기를 권유 드립니다. 정말 편리한 툴입니다.

node 와 watchman 을 설치해줍니다. watchman 역시 Facebook 에서 만든 툴로 파일 시스템 즉 소스코드 변경을 감지하기 위해 사용합니다.

> npm install -g react-native-cli



xcode 가 설치되어 있지 않거나 최신버전이 아닌 경우 설치해줍니다. 공식 가이드에서는 8 보다 높은 버전이면 괜찮다고 하지만 xcode 8을 사용하는 경우 최신 기존의 IOS 시뮬레이터를 사용할 수 없고 제 경우에는 빌드조차 되지 않았습니다. 꼭 최신 버전인 9.2 로 업데이트를 해주세요. Command Line Tools 도 마찬가지입니다.

모든 설치 과정이 잘 진행되었다면...

App 을 한 번 만들어봅시다 ~ 두둥 !!

react-native 라는 커맨드 라인 툴을 활용해서 스켈레톤 App 을 뚝딱 만들어낼 수 있습니다. --help 옵션을 줘서 무엇에 쓸 수 있는 도구인지 좀 더 자세히 확인해보면...

help.png

start, run-ios, run-android, new-library, bundle, eject, link, install, log-ios, log-android, info 등의 기능을 확인할 수 있네요. 어찌된 일인지 init 는 보이질 않는군요. 숨겨진 기능인 것인가? +______+;; help 에서는 확인할 수 없지만 아래처럼 init 기능을 사용할 수 있습니다.

> react-native init AwesomeProject


이렇게 init 을 하고 나면 AwesomeProject 디렉토리가 생성되고 최소한의 App 코드들이 자동으로 생성됩니다. 생성된 주요 디렉토리와 파일들의 내용을 살펴보면...

  • ios : IOS App 을 위한 xcode 프로젝트
  • android : Android App 을 위한 Java 프로젝트
  • node_modules : node 모듈들 설치 경로
  • tests : App.js 에 대한 테스트 코드가 생성된 경로
  • App.js : App 의 React 코드
  • index.js : react-native 모듈과 App.js 를 import 하고 있는 javascript index 파일
  • app.json : app version 등을 관리하는 json
  • package.json : node 모듈 의존성 관리를 위한 json

실제로 Android, IOS 각각을 위한 Native 코드들이 생성된 것이 확인되네요. 신박합니다. ㅎㅎ
그렇다면 ios 시뮬레이터를 구동해봅시다.

> cd AwesomeProject
> react-native run-ios


시뮬레이터.png

시뮬레이터를 보니 뭔가 꽁짜 폰이 하나 더 생긴 듯 기분이 좋습니다. 크ㅇ ㅏ!! 저는 iPhoneX 유저니 IOS 디바이스와 버전을 최신 것으로 변경해봅시다.

> cd ios 
> open .


을 입력하면... 아래와 같은 finder 창이 열립니다. AwesomeProject.xcodeproj 를 클릭하면 xcode 에서 ios 프로젝트가 로딩됩니다.

스크린샷 2018-03-29 오후 11.31.50.png

스크린샷 2018-03-28 오전 12.04.49.png

좌측 상단에서 IOS 디바이스를 iPhone X 로 변경하고 다시 빌드 ( 좌측 최상단 > 버튼) 합니다.

스크린샷 2018-03-29 오후 11.41.24.png

iphone X 로 바뀐 시뮬레이터입니다. +______+

App.js 에서 코드를 수정한 후 [Command + R] 를 누르면 시물레이터가 새로고침 되는데요. 매번 단축키로 반영할 필요 없이 코드 수정시 자동으로 반영되도록 Hot Reload 를 설정해 봅시다.

시뮬레이터에서 [Command+D] 를 누르면 Developer Menu 가 아래에서 올라옵니다. Enable Hot Reloading 을 클릭해서 해당 기능을 활성화하고 App.js 코드를 수정해봅시다. 아래 GIF 에서 일련의 과정을 확인하실 수 있습니다.

hot_reload.gif

React Native 로 스마트하게 App 을 개발할 수 있는 기본적인 환경이 구축된 것 같네요.

App 을 개발 해봅시다. Gazua !!

Sort:  

쉽게 잘 설명해 주시네요^^

댓글 감사합니다 ^^

tom333님이 coffeex님을 멘션하셨습니당. 아래 링크를 누르시면 연결되용~ ^^
tom333님의 수동보팅머신이 보팅해드립니다.

....
사람은 근성입니다. 불만족시 토해내겠습니다.
나락속에서 지상으로
Vote me, Vote you.
Thanks for cjsdns ghappy kaoticmetal coffeexgoldmountain94 jdoill

안드로이드든 iOS든 하나의 소스코드로 올릴 수있다는 장점을 가지고 있긴 하죠 ^^
SNT도 이걸 올려서 개발중입니다. 다만 확실히 네이티브앱보다는 좀 무거워요.

https://github.com/status-im/status-react?files=1

요고 말씀하시는게 맞죠? 그렇네요 ~ 코드 구경 한번 해봐야겠네요 ㅋ

tom333님이 coffeex님을 멘션하셨습니당. 아래 링크를 누르시면 연결되용~ ^^
tom333님의 수동보팅머신이 보팅해드립니다.

...0.1스달 - 하루 일근
0.5스달 - 2주 계약직(댓글기능가능)
1.0스달 - 한달 계약직(리스팀기능가능) coffeex(3/13) kaoticmetal(3/14)
5.0스달 - 반년 계약직 ghappy(3/14)
10.0스달 -...

heejae님이 coffeex님을 멘션하셨습니당. 아래 링크를 누르시면 연결되용~ ^^
heejae님의 [700팔로워 기념 이벤트] 미산가 실팔찌 마감 & 추첨 완료! ( 페이아웃 전까지 당첨자분들 연락바랍니다!! )

6번 미산가 당첨자 classroom 님꼐서 연락이 없으셔서 coffeex님으로 당첨자 변경하겠습니다!! 카톡으로 연락주세요!!

700팔로워이벤트 때문에 연락드립니다! ㅎㅎㅎ 6번미산가 당첨자분이 연락이 안와서 당첨자변경으로 당첨되셧습니다! 글에 있는 카톡방에 들어와서 주소,연락처,성함 좀 남겨주세요~ ㅎㅎ

@heejae 댓글 남겼습니다!
좋은 이벤트 감사해요 ㅋ 대기순위 당첨이라 더 기쁘네요 ㅋㅋㅋㅋ

web app + android/ios 를 모두 고려한다면 괜찮은 플랫폼이긴 합니다만,
생각보다 수월하진 않더라고요.

어떤 어려움들을 겪으셨나요? 먼저 지나가신 분의 조언은 항상 큰 도움이 된다는 ~

Web app 을 만들어 놓고 모바일로 포팅하는 것을 고려했을때,
개념은 같지만 UI 관련 부분은 재작성 해야 합니다. Learn once write anywhere 라고 하지요.
expo 를 사용하면 ios/android 관련 통합된 환경을 제공하지만, 이 방법이 맞는 건지 잘 모르겠네요^^
그냥 순수한 react native 로 가기에는 부담이 좀 있는 편이고요...

네 ~ 결국 플랫폼 별로 ui optimizing 이 필요하다는 말씀이시군요 잘 참고하겠습니다 ^^

theuxyeti님이 coffeex님을 멘션하셨습니당. 아래 링크를 누르시면 연결되용~ ^^
theuxyeti님의 SugarSteem - Final Home Page for Development

...vemccoy,
Part 7 Thank you!fabien, drmake, patrice, sift666, coffeex abh12345, overkillcoin
Part 6 Thank you!acidyo, wackou, the...

오홋!! 오늘 저도 웹개발자인데.. 앱을 만들어보고 싶다는 생각을 많이 했었습니다. 주신 정보를 보고 한번 해봐야겠네요. 감사합니다.

한번 해보세요 !! 일단 재미납니다 ㅋ

짱짱맨 부활!
호출감사합니다

부활감사합니다 !!

Coin Marketplace

STEEM 0.20
TRX 0.13
JST 0.029
BTC 65560.09
ETH 3467.72
USDT 1.00
SBD 2.68