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 프로젝트를 자동 세팅
◦
일종의 코드 생성기 역할 (Bare RN 프로젝트 비슷하게 만듦)
•
eas build
◦
EAS 빌드 서버에서 프로젝트를 빌드/패키징
◦
내부적으로도 결국 prebuild → pod install/gradle sync → 빌드 순서를 실행
◦
로컬에서 prebuild 하지 않아도, 서버가 자동으로 prebuild를 실행해줌
2. "prebuild 함부로 하면 안 된다"는 이유
•
맞아
expo prebuild를 실행하면 ios/, android/ 폴더가 다시 생성되고 자동 수정됨.
•
수동으로 편집해둔 네이티브 설정이 덮어써질 수 있음.
•
그래서 Expo 문서에서도 직접 수정한 네이티브 코드는 config plugin으로 반영하라고 권장해.
prebuild해야하는경우
•
app.json/app.config.js의 Expo 관련 설정(ex: Info.plist 권한 등)을 변경했는데 반영 안 되는 경우
•
새 Expo 모듈을 추가했는데 Pod 세팅이 자동으로 안 붙은 경우
•
EAS 빌드 시에는 자동 prebuild가 되니까, 로컬에서 미리 돌리지 않아도 빌드에는 적용됨
9/5
npx expo run:ios —device설정해서 다운받으려면 충전기 꽂고 xed ios해서 열어서 기기 등록하면 된다