ReactNative: 런타임시 발생하는 에러 해결



(글 작성한 시점의 최신 ReactNative ver: 0.40)

컴파일시 발생하는 에러 해결은 이쪽으로


처음 ReactNative를 공부하다보면 단순히 앱이 예기치 않은 오류로 죽는 것 뿐만 아니라, 런타임 시점에 빨간 에러 화면을 무진장 볼 수 있는데:


바로 이런 경우에 대한 해결방법이다. (물론 스크립트 코딩을 잘못해서 발생하는 디버그 에러는 제외다.) 'Could not connect to development server' 이슈를 포함해 처음부터 안되거나 알 수 없는 이유인경우 아래 해결방법들로 해결 될 수도 있다. 아래 해결 방법들은 ReactNative 학습 초기 단계의 해결방법들이 대다수이다.



  • 앱이 예기치 않은 오류로 실행 중 죽어버리는 경우
    • DevSettingMode를 사용중이며 단말의 버전이 6.0 이상인 경우 단말이 필수로 overlay 퍼미션을 허용해줘야한다. : 블로그 본문 링크 참고
    • 프로젝트 루트의 build.gradle에 maven 경로 추가시 올바르게 추가해줘야 한다.
      • onHost... 로 시작하는 생명주기 메소드를 찾을 수 없는 경우 : 블로그 본문 링크 참고
      • 혹은 build.gradle 파일에 repositories 가 2개여서 잘못 추가할 수도 있는데, allprojects 의 repositories 에 추가해줘야 한다.


  • 상단에 첨부한 빨간 에러 화면을 보이는 경우
    • Android sdk의 환경변수가 필히 'ANDROID_HOME'으로 잡혀야 한다. 사실 이건 굉장히 이상하며 불친절한 부분이다. ReactNative Getting Started 가이드에서 설명하는 AndroidStudio나 Android SDK 등이 이미 설치 되어있는 기존의 안드로이드 개발자의 경우에는 이 부분을 그냥 지나칠 수도 있다. 물론 ReactNative 어딘가에서 환경변수를 참조하는 경로를 수정할 수도 있겠지만, 난 그걸 찾지 못했고 (...) 기존의 변수 이름을 ANDROID_HOME으로 바꿔줬어야만 했다. 저렇게 굳이 명시되어있는 변수명으로 환경변수를 사용하라고만 제안하는 부분이 참.. 불친절하다고 생각될 뿐이다.
    • ReactNative 패키지를 사용하기 위해 서버가 가동중이어야 한다. (아래 방법중 택 1: 개발 버전일시 추천)
      1. 프로젝트 루트 폴더로 이동하여 cmd 창을 띄운 뒤 react-native start 명령어를 입력하여 서버를 가동시킨다.
      2. 단말에서 해당 서버(8081 포트)에 붙을 수 있도록 한다.
        • 단말이 5.0 버전 이상인 경우, 단말이 서버를 가동한 PC와 'USB 디버깅 모드'로 연결된 상태에서 새로운 cmd창에서 adb reverse tcp:8081 tcp:8081 명령어를 통해 접속한다. (adb 환경변수 설정이 되어있어야함)
        • 단말이 5.0 버전 미만인 경우, 서버를 가동한 PC와 같은 wifi 환경에 붙은 후 ip 설정을 해주어야 한다. ip 설정은 에러화면을 뿜고있는 단말의 hardware menu key를 눌러(최근 사용한 앱이 보일 경우에는 메뉴키를 길게 누르거나 폰을 흔들어주면 됨) 'Dev Settings' > 'Debug server host for device' > PC가 사용하는 ip 주소를 입력해주면 된다. (ip 주소는 제어판의 이더넷 설정에서 확인할 수 있다.)
    • ReactNative bundle 파일이 코드 내에 포함되어있어야 한다. (위 방법중 택 1: 릴리즈 버전일시 추천) : 블로그 본문 링크 참고


    에러가 발생하고 해결할 때마다 본문을 업데이트할 예정이다. (Last updated: 17-02-02)

    댓글

    이 블로그의 인기 게시물

    5년차의 슬럼프

    10대 여고생이 만난 프로그래밍 - 마이크로소프트웨어 31주년 컨퍼런스

    About Me