ExpoKit

Gale Lee
5 min readJul 16, 2019

Expo로 카카오 로그인을 개발하는 중에 한 가지 문제가 생겼습니다. Expo는 카카오 SDK 등 외부 네이티브 모듈을 가져올 수 없도록 되어 있었습니다. 카카오 로그인을 웹뷰로도 구현해 봤지만 이메일과 패스워드를 입력하는게 불편해 고민 끝에 Expo프로젝트를 Eject해서 ExpoKit으로 사용하기로 결정했습니다.

ExpoKit 이후에 변하는 것들

Expo build 명령어를 사용해 App Store나 Play Store에 빌드 자동화 기능을 사용할 수 없습니다. Expo Build 명령어를 통해 App Store나 Play Store에 자동 배포를 하지 못하게 됨으로 Xcode를 사용해 스토어에 올리는 방법을 선택했습니다.

ExpoKit으로 변환하면 Xcode 및 Android 프로젝트가 생성됩니다. 이후에는 Expo에서 지원하지 않는 네이티브 모듈을 추가해야 할 경우 Xcode 및 Android 프로젝트에서 직접 관리해야합니다. Xcode나 Android Studio 관리 방법은 직접 익히는 수 밖에 없습니다. 그렇다고 걱정할 정도는 아닌 것 같습니다. 기존에 소스에서 사용하던 Expo 기능은 대부분 그대로 사용할 수 있고 추가해야할 네이티브 모듈이 있다면 대부분 Xcode와 Android 가이드를 제공합니다. 예로 React-Native 카카오 로그인 네이티브 모듈을 배포해주신 hyochan님의 github를 소개 합니다.

엑스포에서 푸시 자격증명을 관리하지 않으므로 다른 푸시 파이프라인을 구현해야합니다. ExpoKit에서는 Expo Push Notification을 사용할 수 없습니다. 대안으로 여러가지 방법 중 구글에서 제공하는 Firebase Cloud Message (FCM)을 사용했습니다. 무료이고 iOS, Android 모두를 지원합니다. 가이드도 잘되어 있어서 이 문제를 생각했던 것 보다 어려움 없이 해결할 수 있었습니다.

ExpoKit으로 Eject하기

Expo eject 명령어를 실행한 다음 ExpoKit을 선택한다. Expo에 로그인 되어 있지 않다면 로그인 정보 입력이 나온다.

iOS bundle identifier는 App Store에 올라가는 고유한 아이디 이므로 신중히 결정해서 입력합니다.

Android package name도 마찬가지로 Play Store에 올라가는 고유한 아이디 이므로 신중히 결정해서 입력합니다.

Eject가 완료되면 Ejected successfully! 메세지를 확인할 수 있고

프로젝트에는 ios와 android 폴더가 생성된 것을 확인할 수 있습니다.

다음 포스팅에서는 ExpoKit iOS 설정 방법을 알아보겠습니다.

이후 포스팅 내용을 살짝 공유드리자면

  1. ExpoKit iOS 설정
  2. ExpoKit & Testflight
  3. ExpoKit & FCM

순서대로 진행 예정입니다. 많은 기대와 관심 부탁드립니다^^

참고자료.

--

--