React Native 의 환경 (4. 빌드 결과물과 서명)

eeennsu·2026년 2월 11일

React Native

목록 보기
4/101

웹은 서버에 파일을 올리면 끝이지만, 앱은 [빌드 → 서명 → 스토어 업로드 → 심사 → 출시]라는 긴 과정을 통과해야 한다. 이 과정의 핵심과 웹 개발자가 자주 활용하는 우회로(hot-updater)가 있다. 먼저 웹 환경과 앱 환경에 배포 차이를 살펴보자.

1. 결과물의 차이

웹은 브라우저가 해석할 수 있는 텍스트 파일(HTML, CSS, JS)을 서버에 올리면 끝이다. 하지만 앱은 운영체제가 실행할 수 있는 이진 파일(Binary)로 압축하고 변환해야 한다.

(1) iOS의 결과물 : .ipa (iOS App Store Package)

  • 아이폰에 설치되는 압축 파일이다.
  • 내부에는 컴파일된 실행 코드, 이미지 리소스, 서명 정보가 들어있다.
  • 반드시 macOS 환경의 Xcode를 통해서만 생성이 가능하다. 윈도우에서는 절대 빌드할 수 없다.

(2) Android의 결과물 : .aab (Android App Bundle)

  • 구글 플레이 스토어 업로드용 표준 포맷이다.
  • 과거에는 .apk를 직접 만들어 올렸으나, 현재는 .aab가 표준이다.
  • 이 파일에는 모든 기기(태블릿, 저사양 폰, 고사양 폰)에 대응하는 리소스가 다 들어있다.
  • 개발자가 .aab를 업로드하면, 구글 플레이 스토어가 사용자의 기기 사양에 딱 맞는 리소스만 추려내어 경량화된 .apk를 생성해 내려준다. 사용자 데이터를 절약해주기 위함이다.

웹처럼 소스코드를 그냥 올리는 게 아니다. 각 OS의 규칙에 맞춰 패키징(Packaging)이라는 과정을 거쳐야만 비로소 '앱'이 된다.


2. 코드 서명

웹사이트의 신뢰성은 SSL 인증서(HTTPS)가 보장한다면, 앱의 신뢰성은 코드 서명이 보장한다. "이 앱은 위변조되지 않았으며, 개발자 A가 만든 것이 확실하다"는 것을 증명하는 것이다.

(1) iOS : 인증서와 프로비저닝 프로필

  • iOS 배포가 까다로운 주범이다. 두 가지 파일이 쌍으로 맞아야 한다.
  • 인증서 (Certificate) : 개발자의 신분증. (Mac의 키체인에 저장됨)
  • 프로비저닝 프로필 (Provisioning Profile): 허가증. "이 아이디(Bundle ID)를 가진 앱을, 이 인증서로 서명해서, 앱스토어(또는 테스트 기기)에 배포해도 좋다"는 애플의 승인 문서.
  • 주의 : 인증서는 유효기간이 1년이다. 매년 갱신하지 않으면 앱 업데이트를 할 수 없다.

(2) Android: 키스토어 (Keystore)

  • 안드로이드 배포의 생명줄이다. .jks 또는 .keystore 확장자를 가진 암호화된 파일이다.
  • 비밀번호 : 키스토어 파일 자체의 비밀번호와, 그 안의 별칭(Alias) 비밀번호 두 가지를 기억해야 한다.
  • 키스토어 파일을 분실하면 복구가 불가능하다. 구글 본사 할아버지가 와도 못 풀어준다. 분실시에는 기존 앱의 업데이트 권한을 영구적으로 상실한다. 패키지명(com.company.app)을 바꿔서 신규 앱으로 출시해야 하며, 기존 사용자(다운로드 수, 리뷰)는 모두 잃게 된다.

3. 배포의 두 가지 방법

  • 하드 업데이트
    전통적인 앱 배포 방식이다. 새로운 라이브러리를 설치했는데 pod install을 해야 하는 경우 (예: 카메라, 지도, 푸시 알림, 결제 모듈 등)에 해야하며 이는 곧 네이티브 코드가 변경되어야 할 때 이다. AndroidManifest.xml이나 Info.plist 설정(권한 요청 등) 도 포함이다.
    • 과정 : 빌드(.ipa/.aab) → 스토어 제출 → 심사(Review) → 배포
    • 소요 시간 : 심사는 1 ~ 3일 소요된다. 심사 거절(Reject) 당하면 수정 후 다시 줄을 서야 한다.
    • 사용자 : 앱스토어에 들어가서 '업데이트' 버튼을 눌러야 한다.
  • 소프트 업데이트
    RN의 UI, 코드 로직, 이미지 같은 에셋만 수정했을 때 사용하는 방식이다. 2025년 3월 까지는 MS에서 지원하는 Code Push라는 것을 사용했지만 지원 종료했다. 대안으로 나온 것이 Supabase와 hot-updater 라는 라이브러리를 사용한 자가 구축 방식이다. Supabase 저장소에 JS 파일을 올려두고 앱이 다운로드하게 만드는 방식이다.

    • 동작원리
      1. hot-updater 라이브러리를 설치
      2. npm run deploy 를 하면 내 컴퓨터에서 JS 번들을 만들어서 Supbase Storage에 업로드한다.
      3. 사용자 앱이 켜질 때 Supabase Storage를 확인해서 새 버전이 있으면 다운로드한다.
    • 장점
      supabase의 무료티어를 쓰면 거의 공짜이다. 또한 업데이트 서버가 내 통제하에 있기에 자유롭다.
    • 단점
      CodePush 처럼 몇 명이 업데이트 했는지, 성공률은 몇%인지 보여주는 대시보드가 없으며 초기 세팅을 직접 해야한다는 단점이 있다.
profile
이력서 https://resume.eunsu.pro

0개의 댓글