Post

React Native 전환 로드맵 10. 배포 · 퍼블리싱 (Expo / EAS, iOS · Android)

Expo/EAS 기준으로 iOS·Android 배포와 스토어 심사 통과를 위한 계정·정책·빌드 체크포인트 정리

React Native 전환 로드맵 10. 배포 · 퍼블리싱 (Expo / EAS, iOS · Android)

배포는 “마지막 단계”가 아니다.
React Native에서 배포는 기술·계정·정책이 동시에 얽힌 독립된 영역이다.

이 파트의 목표는 하나다.

한 번에 스토어 심사를 통과하는 최소 조건을 명확히 하는 것


배포 전 체크리스트 (무조건 먼저)

배포 실패의 70%는 코드가 아니라 설정 때문이다.
아래 항목이 하나라도 비어 있으면 배포를 시작하지 않는다.

필수 메타 정보

  • 앱 이름 (스토어 표시명)
  • 앱 버전 (user-facing)
  • 빌드 버전 (internal)
  • 번들 ID (iOS)
    • 예: com.company.app
  • 패키지명 (Android)
    • 예: com.company.app

원칙

  • 한 번 정한 번들 ID / 패키지명은 변경 비용이 매우 큼
  • 개인 프로젝트라도 “회사 기준”으로 잡아라

계정 관련

  • Apple Developer Program 가입
  • Google Play Console 계정
  • 결제 정보 등록 (필수)

👉 계정 없이는 아무것도 시작 안 된다.


리소스(아이콘 · 스플래시)와 설정

아이콘

필수 조건

  • 정사각형
  • 투명 배경 금지
  • 가장자리 여백 확보

Expo 기준:

  • 하나의 고해상도 아이콘 → 자동 리사이즈
1
2
3
{
  "icon": "./assets/icon.png"
}

스플래시 화면

  • 앱 첫인상
  • 로딩 지연을 가리는 UX 요소
1
2
3
4
5
6
7
{
  "splash": {
    "image": "./assets/splash.png",
    "resizeMode": "contain",
    "backgroundColor": "#ffffff"
  }
}

실무 원칙

  • 애니메이션 ❌
  • 단순한 로고 + 배경색 ⭕
  • Android/iOS 모두에서 자연스러워야 함

권한 문구 (특히 iOS)

iOS는 권한 설명 문구가 없으면 심사 탈락이다.

  • 카메라
  • 위치
  • 사진 접근
  • 알림
1
2
3
4
5
{
  "infoPlist": {
    "NSCameraUsageDescription": "사진 촬영을 위해 필요합니다"
  }
}

원칙

  • 왜 필요한지 사용자 관점에서 명확히
  • 기능과 무관한 권한 요청 ❌

환경변수 전략 (개발 / 스테이징 / 프로덕션)

환경변수는 배포 안정성의 핵심이다.

기본 원칙

  • API URL 하드코딩 ❌
  • 환경별로 분리
  • 빌드 시점에 주입

Expo/EAS 환경 분리 개념

  • development
  • preview (staging)
  • production
1
2
3
4
5
{
  "extra": {
    "apiUrl": "https://api.example.com"
  }
}

또는 EAS secrets 사용

실무 기준

  • 개발: 로컬/테스트 서버
  • 프로덕션: 실 서버
  • “실수로 개발 서버 배포” 방지

EAS Build 전체 흐름

EAS는 Expo의 공식 빌드/배포 파이프라인이다.

전체 흐름 요약

  1. 프로젝트 설정
  2. EAS CLI 로그인
  3. 빌드 프로파일 설정
  4. 클라우드 빌드
  5. 스토어 업로드

iOS 빌드 특징

  • macOS 없어도 가능
  • 인증서/프로비저닝 자동 처리
  • TestFlight 업로드 가능

주의

  • Apple 계정 연동 필수
  • 심사 정책이 까다로움

Android 빌드 특징

  • 상대적으로 자유로움
  • AAB 형식 권장
  • 서명 키 관리 중요

주의

  • 키 분실 = 앱 업데이트 불가

빌드 전 최종 점검

  • 아이콘/스플래시 확인
  • 환경변수 확인
  • 권한 문구 확인
  • 테스트 계정 준비

배포 실패 원인 Top 7 (실무 빈도 순)

1️⃣ 권한 설명 부족 (iOS)

  • 원인: Info.plist 문구 누락/부적절
  • 대응: “왜 필요한가” 명확히 서술

2️⃣ 잘못된 환경변수

  • 원인: 개발 서버 URL 배포
  • 대응: 배포 전 환경 출력 로그 확인

3️⃣ 아이콘/스플래시 규격 오류

  • 원인: 투명 배경, 저해상도
  • 대응: 스토어 가이드라인 사전 확인

4️⃣ 테스트 부족

  • 원인: 실제 기기 미테스트
  • 대응: 최소 iOS/Android 각 1대 테스트

5️⃣ 네트워크 정책 위반 (Android)

  • 원인: HTTP 사용
  • 대응: HTTPS 필수

6️⃣ 번들 ID/패키지명 충돌

  • 원인: 기존 앱과 중복
  • 대응: 초기 설계 단계에서 고유성 확보

7️⃣ 스토어 메타데이터 부실

  • 원인: 설명/스크린샷 부족
  • 대응: 기능 설명 명확히, 과장 금지

이 파트의 결론

  • 배포는 “기술 문제”보다 준비 문제
  • 설정 하나가 전체를 막는다
  • EAS는 속도를, 설계는 안정성을 준다
  • 스토어 심사는 개발자의 태도를 본다

이 단계까지 오면 React Native 앱은 더 이상 연습용이 아니다.

다음이자 마지막 단계에서는 RN 관점에서 다시 보는 JavaScript / React 핵심을 정리한다.


This post is licensed under CC BY 4.0 by the author.