npx expo start 환경은 2개로 나뉜다.
처음엔 있는지도 몰랐다가 실제 도메인 적용한 모습 보고 싶어서 찾아보던 중 development build가 있는 것을 어쩌다 발견함,
1. Using Expo Go
- 설명:
- 기본적으로 Expo Go 앱을 사용하여 프로젝트를 실행
- Expo Go는 빠르게 앱을 테스트할 수 있는 환경
- 여태까지 사용하던 환경인 듯 싶다.
- 작동 방식:
- QR 코드를 스캔하거나 Expo Go 앱에서 실행.
- 네이티브 코드를 포함하지 않은 Expo SDK 기능만 동작.
- 장점:
- 별도 빌드 없이 빠르게 실행 가능.
- Expo의 모든 관리형 워크플로우(Managed Workflow)를 지원.
- 제약 사항:
- 네이티브 모듈(예: react-native-reanimated, react-native-maps)을 사용할 수 없음.
- 커스텀 네이티브 코드를 실행할 수 없음.
2. Press s │ switch to development build
- 설명:
- Development Build로 전환하여 프로젝트를 실행
- Development Build는 앱의 네이티브 환경을 포함한 맞춤 빌드된 앱을 실행
- 작동 방식:
- expo-dev-client를 통해 커스텀 네이티브 모듈과 Expo 프로젝트를 함께 실행.
- 네이티브 코드를 포함하여 앱을 실행할 수 있음.
- 장점:
- 네이티브 모듈과 Expo SDK를 동시에 사용할 수 있음.
- 실제 프로덕션과 유사한 환경에서 디버깅 가능.
- 제약 사항:
- Development Build는 초기 빌드 과정이 필요함.
- Expo Go처럼 즉시 실행은 불가능.
1. eas.json에서 Development Build 확인
주요 설정
- developmentClient: true: expo-dev-client을 활성화하여 Development Build를 생성.
- distribution: "internal": Play Store나 App Store에 배포하지 않고 내부 테스트용으로만 사용.
2. Development Build 생성 방법
Step 1: expo-dev-client 설치
Development Build를 사용하려면 expo-dev-client 패키지 설치
npx expo install expo-dev-client
Step 2: EAS Build 명령 실행
Development Build를 생성하려면 아래 명령어를 실행합니다.
Android:
eas build --platform android --profile development
iOS:
eas build --platform ios --profile development
- 옵션 설명:
- --platform android: Android용 Development Build 생성.
- --platform ios: iOS용 Development Build 생성.
- --profile development: eas.json의 development 프로필을 사용.
Step 3: 빌드 완료 후 앱 설치
- Android:
- 빌드가 완료되면 .apk 파일이 생성
- EAS 빌드 웹 대시보드에서 .apk 파일을 다운로드하여 Android 기기에 설치
- iOS:
- 빌드가 완료되면 .ipa 파일이 생성
- TestFlight를 통해 iOS 디바이스에 설치
- 주의: iOS Development Build를 실행하려면 Apple Developer 계정과 프로비저닝 프로파일이 필요
Step 4: Development Build 실행
- Metro 번들러 시작: Development Build는 Metro 번들러가 필요. 아래 명령어로 시작
expo start --dev-client
- QR 코드 스캔:
- Metro 번들러가 실행되면 QR 코드가 생성된다.
- Android: Development Build 앱에서 QR 코드를 스캔.
- iOS: Development Build 앱을 열고 QR 코드를 스캔.
3. Development Build 실행 확인
Development Build 앱에서 QR 코드를 스캔하면 앱이 로드된다. . 앱이 정상적으로 실행되면 다음과 같은 이점이 있다:
- 네이티브 모듈 사용 가능 (react-native-reanimated, react-native-maps 등).
- Expo SDK와 네이티브 기능을 모두 디버깅 가능.
추가 설정이 필요한 경우
- iOS 기기 테스트:
- iOS의 경우, Apple Developer 계정에 기기를 등록하고 프로비저닝 프로파일을 설정해야 한다.
- 환경에 따라 추가 설정:
- 시뮬레이터 사용: iOS 시뮬레이터 빌드가 필요하면 eas.json에 simulator: true를 추가해야함,
"development": {
"developmentClient": true,
"distribution": "internal",
"ios": {
"simulator": true
}
}
4. 확인 및 디버깅
- 빌드 상태는 EAS 대시보드에서 확인가능
- EAS CLI에서 Metro 번들러를 시작하지 않으면 앱이 실행되지 않을 수 있다.
안드로이드는 eas build --platform android --profile development 실행하니 한번에 되었음
ios development build 시작!
번들러 idnetifier를 물음, 번들 식별자를 iOS와 맞추기 위해
애플 개발자 페이지의 Certificates, Identifiers & Profiles > Identifiers 메뉴로 이동해서
해당 Identifiers 랑 맞추면 됨!
그 전에 app.json 또는 app.config.js에 번들 식별자 추가
"ios": {
"supportsTablet": true,
"icon": "./assets/icons/icon.png",
"bundleIdentifier":
"infoPlist": {
"UIBackgroundModes": ["fetch", "remote-notification"]
}
},
bundleIdentifier 여기에 애플 개발자 계정 페이지에 있는 Identifiers 값을 넣어준다.
그 후 다시 빌드 명령어 실행,
애플 개발자 계정 로그인 하면 됨
로그인 성공 후
sms 또는 디바이스로 인증, 인증 성공하면
EAS CLI가 iOS 빌드를 위해 필요한 Apple Distribution Certificate(배포 인증서)을 생성할지 묻는다.. iOS 앱을 App Store에 배포하거나, TestFlight 또는 내부 테스트용으로 디바이스에 설치하려면 Apple Developer 계정에 등록된 배포 인증서가 필요하기 때문
나는 아직 인증서가 없기 때문에 eas cli에서 자동로 만들어주는 y를 선택했다.
그 다음은 iOS 앱을 테스트할 디바이스를 등록해야 할거냐를 묻는다.
iOS 앱은 Apple의 보안 정책 때문에 등록된 디바이스에서만 실행할 수 있다.
Yes 를 선택하면 디바이스를 등록할 수 있는 단계로 넘어간다
No 를 선택하면 디바이스를 등록하지 않고 빌드가 진행된다.
App Store에 배포를 하거나 TestFlight를 통해 앱을 테스트하면, 디바이스를 등록하지 않아도 된다.
나는 TestFlight를 사용할거니 등록 안함 누를거임!
하지만 누르니 바로
에러가 발생, Development Build는 Apple Developer 계정에 등록된 디바이스를 포함하는 프로비저닝 프로파일이 꼭 필요, 그니까 결국 디바이스 등록해야된다는 이야기,,,
디바이스 등록하면 Development Build 사용 가능,
터미널 명령어 따라서 하다보면 애플 디벨로퍼 기기 페이지에 내 디바이스가 등록된 것을 확인할 수 있다.
이후 빌드 성공하면 터미널에 큰 qr코드 나옴,.
qr코드 찍으면 내가 만들던 앱 디바이스에 설치 가능,
앱 누르면 아마 개발자 모드로 전환하라는 알림이 나올거임
설정 > 개인정보보호 및 보안으로 이동. 개발자 활성화 클릭!
하면 디바이스 껏다 켜지면서 활성화 됨
=> 그리고 터미널에서 npx expo start로 다시 켜고 qr찍으면 설치한 디바이스로 열림
=> 이것이 네이티브 코드 사용 가능한 Development Build
그리고 2차로 , TestFlight 를 위한 Development Build 가 아닌 production Build 로 변경
TestFlight는 Apple이 제공하는 공식적인 iOS 및 tvOS 앱 베타 테스트 도구 TestFlight를 사용하면 개발 중인 앱을 App Store에 정식으로 배포하기 전에 테스터들에게 앱을 공유하고 피드백을 받을 수 있다.
{
"production": {
"distribution": "store",
//App Store와 TestFlight에서 사용 가능한 빌드를 생성
"ios": {
"autoIncrement": true
//빌드 번호를 자동으로 증가시켜 TestFlight에서 업로드 시 충돌 방지.
}
}
},
"submit": {
"production": {
"ios": {
"appleId": "your-apple-id@example.com",
// App Store Connect에 로그인할 때 사용하는 Apple ID(이메일 주소)
"ascAppId": "123456789"
//App Store Connect에서 앱을 고유하게 식별하는 App ID
}
}
}
}
- eas submit 명령 실행 시 **appleId**와 **ascAppId**를 사용하여 App Store Connect와 연결
- EAS CLI가 빌드된 .ipa 파일을 TestFlight에 업로드
- 업로드가 완료되면, TestFlight 섹션에서 해당 빌드를 확인
ascAppId는 appstoreconnect의 내 앱 id이다 , 만약 앱이 없다면 새로 등록해주고 해당 앱으로들어가면 url에서 숫자로 된 번호 볼 수 있다.
https://appstoreconnect.apple.com/
확인 하고 eas.json에 등록까지 했다면
eas build --platform ios --profile production
프로덕션 빌드 실행 후 터미널에서 로그인까지 진행,
인증서를 재사용할건지, 새로 만들건지 질문, 유효기간이 있으면 그냥 y ㄱㄱ
프로비저닝 프로파일을 생성할건지 질문,
프로비저닝 프로파일(Provisioning Profile)**은 Apple 개발 생태계에서 iOS 앱을 실행하거나 배포하기 위한 설정 파일, 프로비저닝 프로파일은 앱이 특정 디바이스에서 실행될 수 있도록 허용하거나, App Store에 배포되기 위해 필요한 인증 정보를 포함
- 용도:
- 특정 앱(번들 식별자)에 대한 배포 및 실행 권한을 정의
- 배포 인증서, 번들 식별자, 그리고 디바이스 정보를 포함하여 앱이 실행될 수 있는 환경을 구성
- 범위:
- 앱마다 고유한 프로비저닝 프로파일이 필요하다.
- 프로필은 번들 식별자와 연결되므로, 새로운 앱이나 번들 식별자 변경 시 새로 생성해야 한다.
- 주기:
- 보통 1년간 유효하며, 만료 시 갱신하거나 새로 생성
프로비저닝 프로파일은 인증서와 독립적이므로, 새 번들 식별자나 설정 변경이 있다면 새로운 프로비저닝 프로파일이 필요
Y: 새로운 프로파일 생성.
N: 기존 프로파일 사용 시도.
새로운 앱을 만들었으니 y,
개념이 조금 어렵넹..
푸시알림 설정할거냐고 질문, 나중에 설정해도 되니 일단 no 선택
ios 빌드 완료~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
expo submit하면 TestFlight 에 파일 제출되서 사용 가능,
'프로젝트 답지' 카테고리의 다른 글
[Dap JI ] expo expo-apple-authentication 사용해서 애플 로그인 (3) | 2024.12.01 |
---|---|
[Dap JI ] 갑자기 되던 모달이 안나오는 이유 발생 (1) | 2024.11.27 |
[Dap JI ] expo 스텍관리문제 (1) | 2024.11.21 |
[Dap JI ] 스토어 승인 요소 (3) | 2024.11.20 |
[Dap JI ] expo 이미지 업로드 (2) | 2024.10.24 |