Search

9월

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 prebuildeas 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를 실행해줌
즉, EAS Build 실행 시 서버가 알아서 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해서 열어서 기기 등록하면 된다