npx expo run:ios하면 기본적으로 development빌드로 빌드되기 때문에 expo dev client있으면 자동으로 들어가서 dev client가 포함된다 그러니까 npx expo start —dev-client로 실행하면 된다
command + d로 디버거 킬 수 있다
eas build —platform ios —profile development로 했을때 developmentClient포함으로 해놓으면 된다 그럼 dev client되고, 시뮬레이터 아니고 내 기기에서 다운받으려면 eas build하는게 맞다
development build로 빌드한다음에 마찬가지로 —dev-client로 실행하면됨
네이티브 기능이 들어가면 이제는 npx expo start로는 에러가 난다
expo notification다운받은다음 시뮬레이터에서 계속 splashscreen만 보이는건 device only라서 실제 기기 아니면 에러나는것일수도 있다 실제 기기에서 테스트해보기
| 명령어 | 용도 | 결과물 | 비고 |
|---|---|---|---|
npx expo start |
JS 번들러 실행 | 없음 | Expo Go로 테스트 |
npx expo run:ios |
로컬 Xcode 빌드 실행 | 시뮬레이터/기기 설치 | .ipa는 안 만듦 |
eas build --profile development --platform ios |
Dev Client 빌드 | .ipa |
Expo Go 대체 앱 |
expo start --dev-client |
Dev Client 연결 실행 | 없음 | JS 핫리로드 |
eas build --profile preview --platform ios |
TestFlight용 | .ipa |
QA/테스터 배포 |
eas build --profile production --platform ios |
App Store 제출용 | .ipa |
정식 배포 |
eas submit --platform ios |
App Store Connect 업로드 | 없음 | 심사/배포 단계 |
eas update |
JS/Asset만 OTA 교체 | 없음 | 빌드 없이 핫픽스 가능 |
prebuild는 함부로 하면 안된다 수동으로 설정해놓은 코드들을 덮어씌울수 있음
prebuild한 다음에 네이티브 모듈 추가하려면 pod install하면 된다
expo prebuild와 eas build 관계expo prebuild
ios/, android/)를 로컬에 생성app.json/app.config.js 안의 설정과 설치된 Expo 모듈을 반영해 Xcode/Gradle 프로젝트를 자동 세팅eas build
prebuild 하지 않아도, 서버가 자동으로 prebuild를 실행해줌👉 즉, EAS Build 실행 시 서버가 알아서 prebuild를 돌려준다고 보면 됨.
expo prebuild를 실행하면 ios/, android/ 폴더가 다시 생성되고 자동 수정됨.prebuild해야하는경우
app.json/app.config.js의 Expo 관련 설정(ex: Info.plist 권한 등)을 변경했는데 반영 안 되는 경우