create-react-native-app 앱개발 삽질기
개발 준비
npm install -g create-react-native-app
creact-react-native-app APP_NAME
apk 만들기
apk로 빌드를 하려면 npm run eject
를 통해서 개발환경을 풀어야한다.
eject 시 두가지 옵션이 있다.
- React Native: I'd like a regular React Native project.
- ExpoKit: I'll create or log in with an Expo account to use React Native and the Expo SDK.
우선 ExpoKit이 로깅 확인 등에서 좋을 거 같아서 ExpoKit으로 선택하고, eject 후에 https://facebook.github.io/react-native/docs/signed-apk-android.html 를 참고하여 빌드 세팅을 했다.
그런데 빌드가 안 된다.
빌드 중
Process 'command './.expo-source/android/detach-scripts/prepare-detached-build.sh'' finished with non-zero exit value 127
같은 에러가 난다.
요건 npm install -g exp
를 한번 해주면 된다.
그래도 빌드하다 보면 :app:exponentPrebuildStep
에서 .expo/PATH: No such file or directory
같은 에러가 나는데, 요건 exp path
를 한번 실행해주면 된다.
빌드는 성공해서 app-release.apk가 잘 생성이 된다.
그런데 앱 크래시가 난다...
해당 apk를 설치하고 실행해보면 앱 크래시가 난다.
com.facebook.react.bridge.UnexpectedNativeTypeException: TypeError: expected dynamic type `string', but had type `int64'
안드로이드 스튜디오를 이용해서 에러 로그를 자세히 보니
08-18 01:43:14.134 6136-6175/? W/com.facebook.internal.Validate: FacebookActivity is not declared in the AndroidManifest.xml, please add com.facebook.FacebookActivity to your AndroidManifest.xml file. See https://developers.facebook.com/docs/android/getting-started for more info.
이런 로그가 있다.
혹시 이게 문제인가 싶어서 AndroidKanifest.xml에 관련 값 구글링해서 넣어줘도 앱 크래시가 난다.
ExpoKit 기반 빌드를 빼보자
혹시 expo가 문제인가 싶어서, 프로젝트 새로 만들고 js와 리소스들 그대로 카피한 다음 eject 할 때 ExpoKit 기반이 아닌 일반 React Native 기반으로 eject를 해봤다. 그리고 빌드 세팅 후 apk를 말은 다음 실행해봤다.
잘 된다.
ExpoKit에 뭔가 문제가 있거나, ExpoKit으로 eject 할 때 잘못 입력한 값이 있거나 그런 듯... 다시 해봐야 할 것 같다.