Expo로 개발한 React Native 앱 빌드

nawnoes·2020년 12월 14일
8

Expo로 개발한 React Native 앱 배포하기

Expo를 이용한 앱을 스토어에 등록 하려고 블로그와 인터넷 글들을 보니 명확하지 않고, 오히려 헷갈리는 부분들이 많다고 느껴졌다.

그래서 Expo 공식 문서를 보며 개발한 앱을 배포하기 위한 절차를 정리 및 진행해본다.

1. 개요

개발한 앱을 배포하는것은 개발에서 중요한 단계이다. Expo 문서를 정리하면서 어떻게 앱을 배포하는지 알아본다.

  • 애플 앱스토어와 구글 플레이스토어에 제출하기 위한 native build를 생성한다.
  • 앱스토어와 플레이스토어에 배포하기 위해 준비하고 일반적으로 거절되는 사유들을 피한다.
  • 앱의 다양한 릴리즈 환경들을 관리한다.

2. Standalone App 빌드

ios와 안드로이드를 위한 standalone 바이너리를 생성한다.

iOS 앱을 빌드하기 위해서는 애플 개발자 계정이 필요하다. 그러나 안드로이드 앱을 빌드하기 위해서는 꼭 필요하지는 않다.

그러나 스토어에 올리기 위해서는 계정이 필요하다.

2.1. Install Expo CLI

Expo CLI는 엑스포 앱을 빌드하고 개발하기 위한 툴이다.

yarn global add expo-cli

2.2. app.json 설정

 {
   "expo": {
    "name": "Your App Name",
    "icon": "./path/to/your/app-icon.png",
    "version": "1.0.0",
    "slug": "your-app-slug",
    "ios": {
      "bundleIdentifier": "com.yourcompany.yourappname",
      "buildNumber": "1.0.0"
    },
    "android": {
      "package": "com.yourcompany.yourappname",
      "versionCode": 1
    }
   }
 }
  • iOS bundleIdentifier와 Android package 항목은 DNS를 거꾸로 한것과 같다. 하지만 꼭 도메인과 관련이 있어야하지는 않는다.
  • name, icon,version들을 채운다.
  • slug는 나의 앱 자바스크립트 들이 배포될 이름이다. 그 예로 expo.io/@community/native-component-list, community은 나의 사용자 이름. native-component-list가 slug.
  • ios.buildNumberandroid.versionCode는 나의 앱의 다른 바이너리를 구별한다. 각 빌드가 스토어에 올라갈때 숫자가 증가 하도록 작성한다.

추가로 app.json에 넣는것을 원한다면 app.json과 app.config.js 설정
을 살펴본다.

2.3 빌드 시작

expo build:android 또는
expo build:ios

위 명령어를 사용하여 빌드를 시작한다. 그냥 expo build를 사용하면 publish 까지 된다고 한다.

2.3.1. 안드로이드를 위한 빌드 선택

2.3.2. 아이폰을 위한 빌드 선택

만약 iOS credential들에 매우 익숙하지 않다면, expo가 모든 나의 credential들을 관리하는것이 가장 좋은 방법이다.

엔터프라이즈 배포

엑스포는 일반적인 앱스토어 배포 뿐만 아니라 엔터프라이즈 배포도 지원한다.

Adhoc 배포

이와 같은 경우 credential을 오버라이드 하기 때문에 iOS credential에 익숙한 경우에 사용하는것이 좋다

푸시 알람 키 iOS로 전환

만약 내가 푸시알람인증서를 사용하고 푸시알람키로 전환하고자 한다면 빌드할때 --clear-puch-cert를 사용한다.

2.4 빌드가 끝나는것을 대기

Turtle Status 사이트 에서 보거나 expo.io/builds/some-unique-id를 통해서 얼마나 빌드가 진행되는지 확인 할 수 있다.

expo build:status에서도 확인 가능하다. 빌드가 끝나면 .apk,.aab, .ipa파일들을 확인하고 다운 받을 수 있다.

2.5 디바이스와 시뮬레이터에서 테스트

Android

  • 에뮬레이터
  • 디바이스

iOS

  • 시뮬레이터
  • TestFlight를 이용한 디바이스 테스트
    • Xcode와 Transpoter를 이용한 방법

2.6 적절한 스토어에 제출하기

앱스토어에 앱 업로드를 위한 Expo 공식 문서 참조

2.7 앱 업데이트 하기

대부분의 경우 Expo CLI를 이용해 앱을 배포하여 업데이트 하는 경우, 나의 유저들은 새로운 JS 를 다운로드 할것이다.

JS업데이트를 통해 원활한 유저 경험을 제공할 수 있으나 2가지 경우에 대해서는 앱을 새로 빌드하여 native binary들을 다시 제출해야한다.

  • 앱의 이름과 아이콘을 변경하는경우
  • SDK 버전을 업그레이드 하는 경우

앱의 변경을 추적하기 위해서는 앱의 app.json 안에 versionCodebuildNumber를 업데이트 해야한다.

References

https://docs.expo.io/distribution/introduction/
https://docs.expo.io/distribution/building-standalone-apps/

1개의 댓글

comment-user-thumbnail
2022년 9월 24일

궁금한게있어서 질문드립니다. 보통 rn을 현업에서 사용한다면 expo를 사용하나요 ? rn cli를 사용하나요 ? expo bareworkflow 사용시, 간편로그인(카,네,구)이나 푸시메시지 사용할수있나요?

답글 달기