티스토리 뷰

728x90
반응형

 

요즘에 리액트네이티브를 만지고 있습니다

 

리액트 네이티브를 릴리즈로 빌드를 하게 되면

 

react native 의 metro bundler가 앱이 스스로 실행될수 있게끔 필요한 모듈을 모두 번들링하여 그것을 포함해 빌드가 되는 반면에

 

debug 모드로 빌드를 하게되면

 

로컬에 웹서버가 실행되면서 핫리로드라고도 불리는 개발 변경 내역을 실시간으로 볼수 있는 개발환경이 구성됩니다

 

저는 개발할때 에뮬레이터를 띄우기보다는 실제 기기에 앱을 실행시켜서 하는편인데요

 

(에뮬레이터가 먹는 메모리가 아깝기도 하고, 실기기에서 테스트하는것을 선호합니다, 단 실기기에서 테스트할때는 개발폰의 와이파이와 개발환경 PC의 와이파이가 같은 곳에서 실행하여야 합니다)

 

 

react native 콘솔 명령어로 이런식으로

 

npx react-native run-ios

 

디버그 빌드를 해도 되지만,(위의 명령어는 mac os 환경에서 시뮬레이터를 실행시킵니다)

 

우리가 늘상 xcode에서 개발하듯이

 

또는 android studio에서 개발하듯이

 

코드 수정후에 IDE에서 실행 버튼을 눌러 빌드를 해도

 

리액트네이티브는 빌드 과정에서 필요한 작업들을 자동으로 수행합니다(로컬웹서버를 띄우는것을 포함하여)

 

 

 

 

 

그런데 가장 기본이 되는 베이스 프로젝트를 생성해서 ios와 android 각각 디버그 빌드를 실행했는데요

 

xcode에서는 정상적으로 실행되었는데

 

안드로이드는 계속 이 화면만 나타나고 실행이 되지 않더라구요

 

 

 

다행히 구글링을 해서 솔루션은 발견을 했습니다

 

프로젝트의 android/app/src/main/assets 폴더를 생성하고

 

react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res

 

위의 명령어를 입력하시면 그 다음부터는 정상적으로 앱이 실행되는것을 확인할수 있습니다

 

근데 도통 react native 문서를 뒤져봐도 갑자기 저게 왜 필요한건지는 알수가 없네요

(2020.09.08 삭제함)

 

react-native bundle 명령어를 사용해서 번들을 만들라는 답변을 구글링에서 많이 찾을수 있는데요

 

이 방법이 그리 좋은 방법이 아님을 깨달았습니다

 

 

안드로이드 스튜디오에서 실행버튼을눌러 디바이스에서 앱을 구동하는 방법이

 

우리가 일반적으로 안드로이드 앱을 개발할때는 당연히, 자연스레 쓰는 방법이지만 

 

이 방법으로 리액트네이티브 프로젝트를 빌드 구동하면

 

정작 껍데기의 apk는 설치가 되지만

 

메트로서버가 실행되지가 않았기때문에

 

javascript와 그외 리소스들이 번들링이 되지 않아

 

앱 내용이 나타나지 않습니다

 

리액트네이티브 프로젝트에서는 메트로 서버에 연결해서 이용하는 방법이

 

라이브리로드 기능을 사용할수 있다는 측면에서 훨씬 이득이 있으므로

 

안드로이드 스튜디오의 실행 버튼을 눌러 앱을 구동하는것이 아닌

 

콘솔에서

 

npx react-native run-android 

 

명령어를 통해 이용하는것이 훨씬 정석적인 방법입니다

 

이 명령어로 실행시 자동으로 메트로 서버가 구동되며 구동 이후에 안드로이드 디바이스에 앱이 설치되어 구동됩니다

 

(2020.09.08 추가됨)

 

 

 

 

728x90
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함