eatthefrog
Expo 빌드 & App Store 배포하기(1) 본문

[@] 애플 디벨로퍼에서 Identifier등록 완료
[@] app.json의 ios섹션에 bundleIdentifer 속성 추가 완료
[@] App Store Connect에서 앱 등록
[@] expo에서 앱 빌드하기 (react-native-google-mobile-ads는 ATT popup설정 필요)
[@] App Store Connect와 연동하기
[X] eas submit --platform ios 명령어를 통해 빌드한 앱을 제출 -- ios정책 변경
[@] Xcode 16을 사용하여 직접 빌드하고 제출하기
로컬에서 Xcode 16을 사용하여 직접 빌드하고 제출하기
As of April 24, 2025, Apple requires that applications uploaded to App Store Connect are built with Xcode 16 or later using the iOS 18 SDK. To learn more, go to https://expo.dev/blog/apple-sdk-minimum-requirements.
1. Xcode 16 설치 확인:✅
xcodebuild -version
- 결과가 "Xcode 16.x"로 시작해야 합니다
- 만약 Xcode 16이 설치되어 있지 않다면 App Store에서 Xcode 16을 설치해야 합니다
2. 프로젝트 준비:✅
npx expo prebuild
- 이 명령어는 React Native 프로젝트를 네이티브 iOS 프로젝트로 변환합니다
3. Xcode 16 설정:✅
- Xcode 16 실행
- 상단 메뉴에서 Xcode > Settings... (또는 Preferences...) 클릭
- Locations 탭 선택
- Command Line Tools 드롭다운에서 Xcode 16 선택
- 창 닫기
4. 프로젝트 열기:✅
- Finder에서 프로젝트 폴더의 `ios` 폴더로 이동
- `프로젝트명` 파일 더블클릭
- 또는 Xcode에서 File > Open... 선택 후 해당 파일 선택
5. iOS 18 SDK 설정:✅
- Xcode 왼쪽 네비게이터에서 프로젝트 이름(프로젝트명) 클릭
- "Build Settings" 탭 선택
- 검색창에 "deployment target" 입력
- "iOS Deployment Target"을 18.0으로 설정
- 검색창에 "base sdk" 입력
- "Base SDK"가 iOS 18로 설정되어 있는지 확인
6. 서명 설정:✅
- "Signing & Capabilities" 탭 선택
- Team: Apple Developer 계정 선택
- Bundle Identifier: 확인
- Provisioning Profile 자동 선택 확인
7. Archive 생성:✅
- 상단 툴바에서 Scheme 선택 (프로젝트명> Any iOS Device)
- Product > Scheme > Edit Scheme 클릭
- 왼쪽에서 "Run" 선택
- "Build Configuration"을 "Release"로 변경
- "Close" 클릭
- Product > Archive 선택
- 빌드가 완료될 때까지 기다림
8. App Store Connect에 제출:✅⚠️
- Archive가 완료되면 Organizer 창이 자동으로 열림
- "Distribute App" 버튼 클릭
- "App Store Connect" 선택 후 "Next"
- "Upload" 선택 후 "Next"
- "Automatically manage signing" 선택 후 "Next"
- "Upload" 버튼 클릭
⚠️문제발생: Hermes 엔진(ReactNative의 JavaScript 엔진)의디버그 심볼(dSYM) 파일이누락
dSYM은 크래시 리포트를 분석하는데 필요한 파일로, 컴파일러가 소스코드를 기계어로 변환할 때 생성되며 고유한 UUID로 구분되어 있다.
Xcode 15부터 구성이 최신 상태가 아니라면 아래 오류가 발생할 수 있다고 한다. EAS 빌드를 사용하여 배포할경우네는 EAS가 자동으로 dSYM을 처리해주지만, 현재 EAS는 XCode 16빌드를 지원해주지 않으므로, 직접해결해야한다.
하지만, 이 경고는 필수해결 요소가 아니므로 무시해도 좋다. 왜냐하면 앱이 TestFlight에 정상적으로 업로드되었으므로 배포과정은 성공적으로완료되었기 때문! 나중에 크래시 리포트 분석이 필요할 때 dSYM 파일 관련 설정을 수정하면 된다.
9. 업로드 확인:✅
- App Store Connect 웹사이트(https://appstoreconnect.apple.com) 접속
- "My Apps"에서 앱 선택
- "TestFlight" 또는 "App Store" 탭에서 업로드된 빌드 확인
Firebase iOS 설정 확인
- 콘솔에 ios 앱추가 ✅
- sdk를 ios/앱이름 디렉토리에 복사 ✅
react-native-google-mobile-ads 주의사항
1. 테스트 광고 ID 사용 금지 ✅
2. 앱스토어 개인정보 처리방침 (Privacy Policy) 명시 ✅(로폼 사용)
3. App Store Connect - "이 앱은 제3자 광고를 포함합니까?" 질문에 Yes
4. ATT(App Tracking Transparency) 설정 ✅
- ios 14+에서는 광고를 위해 사용자 추적 허용(Tracking Permisiion)을 요청해야한다.
- @react-native-firebase/app이나 expo-tracking-transparency같은걸 써서 앱 처음 실행할때 "광고 목적 추적을 허용하시겠습니까?" 팝업을 띄워야한다. 이거 안하면 리젝 확률이 높다.
<ATT 팝업 띄우기>
1. Info.plist에 NSUserTrackingUsageDescription 추가
2. ATTrackingManager.requestTrackingAuthorization()을 직접호출해서 ATT팝업 표시
참고: https://www.devjeon.blog/eas-ios
전비(JeonB)의 개발일기
전비(JeonB)의 개발블로그입니다. IT 기술 정리 및 공유를 지향합니다.
www.devjeon.blog
국내 유일 법률문서 자동작성 · 서명 · 통합 관리 플랫폼
모바일에서도 쉽고 간편하게 법률문서 자동작성 및 원스톱 전자서명 가능! 실시간 온라인 공유/수정으로 업무 효율은 UP! 클라우드 기반의 안전한 보관/관리까지
lawform.io
'프론트엔드 노트' 카테고리의 다른 글
| Skyscanner) Task 1: Create a Backpack React web app (진행중) (0) | 2025.05.16 |
|---|---|
| Expo 빌드 & App Store 배포하기(2) (0) | 2025.04.30 |
| 리액트 기본부터 복습일지 0305 (0) | 2025.03.05 |
| React Native에서 WebView사용하기 (0) | 2025.02.18 |
| 모던 자바스크립트) 오답 노트 3 (1) | 2025.01.15 |