Expo Go가 당신에게 거짓말을 시작할 때 정확히 Expo 개발 클라이언트를 사용할 준비가 되었습니다.
앱이 샌드박스에서 작동하고, 빠른 리프레시가 좋습니다. 그런 다음 네이티브 의존성을 추가하거나, 푸시 알림을 설정하거나, OAuth 흐름을 테스트하거나, 프로덕션 앱이 시작하는 방식과 비슷하게 미러링을 시도하세요. suddenly 격차가 명확해집니다. 더 이상 앱을 디버깅하지 않습니다. 더 이상 단순화된 환경을 디버깅합니다.
Expo 개발 클라이언트가 워크플로우를 변경하는 곳입니다. Expo에서 좋아하는 빠른 자바스크립트 루프를 유지하지만, 테스트를 사용하는 커스텀 네이티브 바이너리로 옮깁니다. 그 바이너리는 실제로 배포할 앱과 더 비슷하게 작동합니다. 단독 개발자에게는, 개발 주기에 늦은 시기에 놀라움을 줄 수 있는 상황이 적습니다. 팀에게는, 개발 프로세스가 공유된 빌드, QA, 미리보기 환경, 업데이트 검증을 지원할 수 있습니다.
목차
- 엑스포 Go를 넘어서야 하는 이유
- 준비 사항과 프로젝트 설정
- EAS로 커스텀 클라이언트를 빌드하기
- 새 클라이언트와 함께 실행 및 디버깅
- CI/CD와 라이브 업데이트 통합
- 일반적인 오류와 해결 방법
프로덕션 앱을 위한 Expo Go를 넘어서야 하는 이유
Expo Go는 시작 단계에서 유용합니다. 설정의 마찰을 제거하고 React Native 프로젝트를 빠르게 실행하고, 빠른 피드백 루프를 제공합니다. 많은 팀이 여기서 시작하는 이유입니다.
앱이 프로토 타입이 아닌 경우 문제가 시작됩니다. Expo는 Expo Go를 "sandbox"로 문서화하고, 알림이나 OAuth 인증과 같은 일부 네이티브 기능을 정확하게 시뮬레이션할 수 없다고 언급합니다. 개발 빌드 모델은 "Debug" 빌드로서 프로덕션급 앱을위한 "Debug" 빌드로서 프로덕션급 앱을위한 "Debug" 빌드로서 Expo 개발 빌드 소개 __CAPGO_KEEP_0__ expo-dev-client __CAPGO_KEEP_0__ __CAPGO_KEEP_0__ __CAPGO_KEEP_0__ __CAPGO_KEEP_0__.

__CAPGO_KEEP_0__가 Expo Go에 포함되지 않아 패키지가 필요로 하는 네이티브 __CAPGO_KEEP_0__
실제 네이티브 구성이 있는 앱에서 OAuth 흐름이 어떻게 다르게 동작하는지
- 제한된 환경에서 앱이 권한을 요청하거나 이벤트를 받는 방식이 실제 프로덕션 앱과 다를 수 있습니다. A package needs native code that Expo Go doesn’t include.
- 이것들은 일반적인 단계가 아니라 edge case입니다. 실제 모바일 프로젝트의 단계입니다. 실제 네이티브 구성이 있는 앱에서 오류가 발생하는 경우
- 네이티브 의존성: 실제 네이티브 구성이 있는 앱에서 오류가 발생하는 경우
- 인증: 제한된 환경에서 앱이 권한을 요청하거나 이벤트를 받는 방식이 실제 프로덕션 앱과 다를 수 있습니다.
Notification과 장치 기능:
Expo Go는 인터페이스를 제공하는 데 좋습니다. 그것은 생산 동작을 검증하는 약한 위치입니다.
개발 클라이언트가 올바른 다음 단계인 이유
Expo 개발 클라이언트는 Expo의 개발 도구를 빌드-in 한 사용자 지정 앱 바이너리를 제공합니다. 따라서 개발자 경험은 강력하지만 원시层는 이제 여러분의 것입니다. 설치된 클라이언트는 팀이 테스트하는 대상이 됩니다. generic 컨테이너에 의존하는 대신.
그것은 더 큰 소리보다 중요합니다. 사용자 지정 클라이언트로 이동하면 'Expo Go에서 실행되는지 여부'라는 질문에서 '우리가 빌드하는 앱에서 작동하는지 여부'라는 질문으로 바뀌게 됩니다. 그것이 올바른 질문입니다.
Capgo의 'Expo 대신의'에 대한 비교적 더 광범위한 앱 배포 모델을 비교하는 경우 는 유용한 맥락입니다. 그것은 팀이 샌드박스-첫 번째 워크플로우를 넘어서 시작하는 곳을 강조합니다.
mindset의 변화
Expo 개발 클라이언트를 한 번의 설정 작업으로만 다루는 가장 큰 실수는
workflow
| accepting one trade-off를 통해 제어를 얻는다는 것입니다. | workflow가 빠르다. | 더 많은 의식의식이 필요하다 |
|---|---|---|
| Expo Go | 기본 자바스크립트 반복 | 자연적인 현실에 의존하는 모든 것이 |
| Expo 개발 클라이언트 | 자바스크립트 내부의 커스텀 앱 | 자연적 의존성 변경과 자연적 구성 변경 |
전문 앱 개발에서 좋은 거래입니다. 가장 쉬운 데모를 최적화하는 대신에 신뢰할 수 있는 배포를 최적화합니다.
사전 요구 사항 및 프로젝트 구성
아무것도 만들기 전에 프로젝트를 반복 가능한 빌드에 견딜 수 있는 상태로 만듭니다. 대부분의 첫 번째 실패는 기본 구성에 대한 skipping에서 오지 않습니다. Expo 자체에서 오지 않습니다.
Expo의 문서 및 생태계 지침은 개발 빌드를 "완전한 개발 환경"으로 설명합니다. "완전한 개발 환경" 그것은 실제 프로덕션 환경의 대표적인 예시입니다. 앱이 커스텀 네이티브 code 또는 프로덕션급 QA에 의존하는 경우, Draftbit의 Expo 개요에서 다루는 것과 같이 Expo 개발 도구 및 개발 빌드.
계정과 CLI layer부터 시작하세요.
앱 layer가 중요해지기 전에 두 가지가 작동해야 합니다.
- Expo CLI 접근 권한
- EAS CLI 접근 권한
터미널에서 Expo 계정에 로그인되어야 합니다. 팀은 로컬 명령이 원격 빌드 또는 자격 증명 요청이 나타날 때까지 문제가 없다고 생각하기 때문에 종종 이 점을 무시합니다.
일반적으로 깨끗한 설정에는 포함됩니다.
- Expo 계정 세션: 이것은 로컬 작업을 원격 빌드 서비스 및 프로젝트 소유권과 연결합니다.
- EAS CLI 설치: EAS는 프로젝트를 공유 가능한 iOS 또는 Android 바이너리로 변환합니다.
- A locally 실행 중인 프로젝트: 기본 앱 시작이 작동하는지 확인하기 전에 빌드 복잡성을 도입하지 마십시오.
앱 프로젝트에 설치하여 Expo 구성이 일관적인지 확인하십시오. 패키지 관리자에 따라 명령어는 달라질 수 있지만, 이 패키지는 앱을
공유된 샌드박스에서 실행 expo-dev-client내장 개발 바이너리 내에서 실행
으로 변환하는 것입니다.
실용적인 규칙: 개발 클라이언트를 빌드하기 전에 네트이브 종속성 목록이 팀원들이 동일한 바이너리를 설치하고 사용할 수 있도록 충분히 안정적인지 확인하십시오.
앱 구성 확인하기
많은 혼란은 app.json 를 메타데이터로만 다루는 것에서 오는 것입니다. app.config.js 아니에요.
프로젝트가 다음을 포함하고 있는지 확인하세요:
- 유니크한 앱 이름: 개발자가 단말기에 여러 버전을 설치할 때 유용합니다.
- 유니크한 번들 또는 패키지 식별자: 자연스러운 빌드 및 후속 서명에 중요합니다.
- rõ한 환경 의도: 팀이 별도의 스테이징 및 프로덕션 식별자를 사용한다면 의도적으로 반영하세요.
지역 환경이 엉망이라면, 첫 번째 빌드 전에 그것을 단단하게 하기 위해 가치가 있습니다. Capgo의 지역 환경 설정을 위한 Capgo의 지침은 Expo에 특정되지 않지만, 안정적인 지역 도구 및 명시적 구성으로부터 reproducible 모바일 작업이 시작되기 때문입니다. setting up a Capacitor local environment EAS를 시작하기 전에 이 체크리스트를 사용하세요:
targetLanguage
protectedTokens
| 확인 | 왜 중요한가요 |
|---|---|
expo-dev-client 설치되어 있습니다 |
사용자 지정 개발 클라이언트 동작을 활성화합니다 |
| Expo 계정이 연결되어 있습니다 | EAS 사용을 위한 smooth한 사용을 위해 필요합니다 |
| 앱 식별자는 고유합니다 | 자연스러운 빌드 및 설치 충돌을 방지합니다 |
| 프로젝트는 로컬에서 시작됩니다 | 런타임 문제와 빌드 문제를 혼동하지 않도록 합니다 |
| 팀은 언제 다시 빌드해야 하는지 알 수 있습니다 | 자연스러운 변경 후 혼란을 줄입니다 |
완벽함이 목표가 아니라면, 첫 번째 빌드가 지루해지는 것이 목표입니다. 그게 승리입니다.
EAS로 사용자 지정 클라이언트를 만들기
이것이 워크플로우가 실제로 시작되는 지점입니다. 사용자 지정 클라이언트에 대해 이야기하는 것이 끝나고, 실제로 하나를 생성합니다.
Expo는 사용자 지정 네이티브 code를 설치 expo-dev-client, EAS Build 또는 로컬에서 네이티브 앱을 생성한 후 실행합니다. npx expo start --dev-clientExpo는 또한 워크플로우 개요에서 JavaScript-only 변경 사항은 빠르지만, 네이티브-__CAPGO_KEEP_0__ 변경 사항은 새로운 개발 빌드를 필요로 합니다. Expo 개발 클라이언트를 사용하여 EAS code 도구를 사용하여 빌드하는 과정의 4단계 인포그래픽입니다.

순서는 간단하지만, 첫 번째 실행이 낯설 수 있습니다:
EAS __CAPGO_KEEP_0__와 설치 및 인증
- EAS CLI
- 설정 초기화 또는 확인
- 개발 빌드 프로필을 생성하세요
- iOS 또는 Android를 위한 빌드를 트리거하세요
- 장치 또는 시뮬레이터에 결과 바이너리를 설치하세요
EAS는 일관성을 제공합니다. 개발자 각자가 임의로 로컬 네이티브 빌드 상태를 만들지 않고, 팀은 공유된 빌드 정의에서 바이너리를 생성할 수 있습니다.
빌드 프로필이 정말 하는 일
A development 프로파일은 단순히 레이블이 아닙니다. 빌드 시스템에 이 바이너리가 활성 개발을위한 것임을 알려줍니다. 스토어 배포가 아닌
일반적으로 설치된 앱은:
- 개발 클라이언트 동작을 포함해야합니다
- 개발자 및 테스터가 쉽게 시작할 수 있어야합니다
- 일상 작업 중에 메트로 서버와 연결되어야합니다
- __CAPGO_KEEP_0__
CI가 실제로 작동하기 시작하는 곳입니다. 빌드 프로파일이 존재하고 예측할 수 있게 되면 자동화할 수 있습니다.
__CAPGO_KEEP_0__ AI를 위한 React Native 현대화__CAPGO_KEEP_0__
개발 클라이언트는 운영 기반 층의 일부가 될 때가 많습니다. 팀이 모바일 표면에 제품 변경을 더 자주 배포할 때 그렇습니다.
__CAPGO_KEEP_0__
실제 앱 바이너리처럼 처리하세요.
- __CAPGO_KEEP_0__ Android에서:
.apk실제 장치 또는 에뮬레이터에 - iOS에서: 팀원과 함께 작업할 때는
.ipa__CAPGO_KEEP_0__에 따라 대상에 따라 시뮬레이터 호환 출력 또는 시뮬레이터 호환 출력이 될 수 있습니다. - 팀원에게: 팀원이 모두 새로 만들지 않도록 하기 위해 필요한 경우가 아니면 일반 EAS 메커니즘을 통해 빌드를 공유하세요.
개발 빌드는 팀이 모두 동일한 규칙에 따라 동의할 때 가장 관리하기 쉬운 빌드입니다: 원본 변경 시 재빌드, code 변경 시 재빌드하지 않습니다.
하지 말아야 할 것
첫 번째 빌드는 원시 복잡성을 제거하지 않습니다. 그 복잡성을 올바른 위치에 두고 있습니다.
SDK-레벨 원시 종속성을 업데이트하거나 플러그인으로 구동되는 원시 구성 변경, 새로운 원시 모듈 추가, 권한 변경 시 새로고침 된 개발 빌드가 필요합니다. 그게 정상입니다. 그 reward는 일상적인 JavaScript 작업이 클라이언트에 반영된 앱에서 여전히 빠르게 진행됩니다.
새로운 클라이언트와 함께 실행 및 디버깅
첫 번째로 클라이언트를 설치하고 Metro와 연결하면 차이가 뚜렷합니다. 그것은 이제는 Toy-box의 Expo와 같은 느낌입니다.
서버를 시작하려면 npx expo start --dev-client. 그런 다음 시뮬레이터, 에뮬레이터 또는 물리적 장치에서 개발 클라이언트를 열고 런처 UI를 통해 연결하세요. 런처는 Capgo가 도입한 중요한 변경 중 하나입니다. expo-dev-clientdebugging 지원과 네트워크 요청 검사와 같은 기능을 제공합니다. 이는 Expo __CAPGO_KEEP_0__ 개발자 클라이언트 페이지에서 문서화되어 있습니다. Expo SDK 페이지.

일반적인 개발 세션
개발 세션의 일반적인 흐름은 다음과 같습니다.
최신 branch를 pull합니다. 기존에 설치된 개발 클라이언트는 이미 장치에 설치되어 있습니다. Metro를 시작하고 앱을 실행한 후 현재 서버에 연결합니다. 그 후에는 이전과 같이 주로 JavaScript를 변경하고 빠르게 업데이트를 확인합니다.
실제 네이티브 환경에 의존하는 동작을 검사해야 하는 경우 큰 차이가 나타납니다. 커스텀 클라이언트를 사용하면 일반적인 루프 밖으로 나가지 않고도 테스트할 수 있습니다.
중요한 디버깅 도구
추가 도구는 꾸밈이 아닌 실제 문제를 해결합니다.
- 런처 UI: 환경 또는 팀원 호스트 서버 간에-switching할 때 유용합니다.
- 개발자 메뉴: __CAPGO_KEEP_0__의 동작을 예상하는 행동을 제공합니다.
- __CAPGO_KEEP_0__: __CAPGO_KEEP_1__의 UI가 깨져 보이지만 실제 문제는 요청 실패, 인증 상태, 또는 환경 설정 오류일 때 도움이 됩니다.
API에서 개발 클라이언트에서 code 호출이 실패할 때, 요청 경로와 환경 가정에 대해 먼저 검사하세요. UI에 손을 대기 전에. 문제는 종종 보기에 있는 컴포넌트 외부에 있습니다.
실제 장점입니다. 단일 설치된 바이너리에서 여러 환경을 검증할 수 있습니다. 매번 컴파일하지 않아도 되기 때문에, 리뷰어가 PR 프리뷰를 테스트하고 QA 엔지니어가 스테이징을 테스트하고 개발자가 로컬 브랜치를 테스트할 때 especialmente 도움이 됩니다.
Capgo의 웹 기반 모바일 셸도 배포하는 팀이 있다면, Capgo의 Capacitor 앱의 ultimate debugging 가이드 는 더 넓은 디버깅 마음가짐을 위한 가치가 있습니다. 도구는 다르지만 discipline은 비슷합니다: 전송, 환경, 런타임 동작을 검사하세요. 추측하기 전에.
__CAPGO_KEEP_0__에서 잘 작동하고 __CAPGO_KEEP_0__에서 잘 작동하지 않는 것
__CAPGO_KEEP_0__에서 잘 작동하는 것:
| __CAPGO_KEEP_0__: | 상황: |
|---|---|
| 인증 리다이렉트 테스트 | 네이티브 앱 동작은 실제 운영 환경에 가깝습니다. |
| API 통합을 확인하는 중입니다. | 네트워크 검사 시간이 단축되어 피드백 루프가 짧아집니다. |
| 환경 Switching | 런처 UI는 불필요한 빌드 재구성을 피합니다. |
| 팀 QA는 단일 바이너리에서 진행됩니다. | 모든 팀원은 동일한 네이티브 설정을 테스트합니다. |
잘 작동하지 않는 점:
- 클라이언트를 버려두는 것: 팀이 유지 관리하지 않으면 혼란이 빠르게 퍼집니다.
- 네이티브 빌드 재구성 경계를 무시하는 것: 원본 네이티브 의존성 변경 시,陈舊한 클라이언트는 시간을浪費합니다.
- 모든 연결 실패를 앱 버그로 가정한다면: 많은 경우는 단지 로컬 환경 문제입니다.
CI/CD와 Live Updates와의 통합
엑스포 개발 클라이언트가 개인 설정에서 팀 운영으로 변할 때 훨씬 더 가치가 있습니다.
성숙한 워크플로우는 일반적으로 관심사에 따라 분리됩니다. 네이티브 변경은 새로운 개발 빌드를 생성합니다. 자바스크립트 및 자산 변경은 더 빠른 업데이트 경로를 통해 이동합니다. 리뷰어 및 QA는 채널, 빌드 프로파일 및 업데이트 목적지에 대한 팀의 합의로 인해 테스트하는 올바른 것을 물어보지 않습니다.

CI/CD의 위치
개발 클라이언트는 CI와 잘 작동하는 이유는 자동화에 안정적인 목표를 제공하기 때문입니다.
일반적인 패턴은 다음과 같습니다:
- Pull request 변경: CI는 네이티브 의존성이 변경되었을 때 개발 빌드를 생성하거나 유효성 검사합니다.
- Branch-based 환경: 다른 branch는 다른 업데이트 채널 또는 서버 목표에 mapping됩니다.
- 공유 테스터 워크플로: QA는 하나 이상의 알려진 개발 클라이언트를 설치하고 런처 및 업데이트 구성으로 컨텍스트를 switch합니다.
그 구조는 모호성을 줄입니다. 개발자들은 다시 빌드할 때 알 수 있습니다. 테스터들은 native 변경을 검증하는지 아니면 기존 바이너리에 업데이트된 것을 검증하는지 알 수 있습니다.
실시간 업데이트 역할
개발 클라이언트는 팀이 가장 많은 시간을 절약할 수 있는 곳입니다. 개발 클라이언트는 출시 전에 업데이트 동작을 검증할 강력한 위치입니다. 개발 클라이언트는 개발 서버와 게시된 업데이트 사이에서 개발 클라이언트가 production-like 앱 셸에서 switch할 수 있기 때문입니다.
그것은 유용한 분할을 열어줍니다:
| 변경 유형 | 배포 경로 |
|---|---|
| 새로운 네이티브 모듈 또는 권한 변경 | 새로운 개발 빌드 |
| JavaScript 동작 수정 | 업데이트 배포 |
| 복사 또는 자산 조정 | 업데이트 배포 |
| 환경 검증 | __CAPGO_KEEP_0__에서 설치된 클라이언트의 채널 또는 서버 Switch |
Expo 업데이트 스택 외부의 팀에게 Capgo의 OTA 업데이트 CI/CD 통합 가이드 Capacitor 측에서 유사한 운영 모델을 보여준다. 팀이 제어된 롤아웃 채널과 업데이트 전달 자동화가 필요하다면 이 옵션 중 하나이다.
신뢰할 수 있는 패턴은 간단하다. 네이티브 code 변경 시 빌드. 설치된 바이너리가 변경이 필요한 모든 것을 포함하고 있는 경우 배포.
팀의 습관이 혼란을 막는다
기술 설정은 중요하지만 운영 규칙이 더 중요하다:
- __CAPGO_KEEP_0__
staging,production명확한 채널 이름: - , 이름 미리보기가 명확해야 합니다. New plugin, permission change, or native SDK update should never be a judgment call.
- 새 플러그인, 권한 변경 또는 네이티브 __CAPGO_KEEP_0__ 업데이트는 절대 판단의 여지가 없어야 합니다. 환경당 한 번 설치 가능한 클라이언트 유지 전략:
- 많은 변형은 지원 오류를 일으킵니다. 업데이트 유효성 명시:
업데이트가 적용되고 기대하는 팀이 사용하는 동일한 바이너리 내부에서 실행되는지 확인해야 합니다.
이 시점에서 Expo 개발 클라이언트는 개발자 편의성에서 릴리스 인프라로 변합니다.
일반적인 문제와 해결 방법
Expo 개발 클라이언트의 대부분의 문제는 일반적인 문제일 뿐입니다. 하지만, 실패가 자주 발생하는 경계를 넘어야 하기 때문에, laptop에서 장치로, Metro에서 앱으로, 네이티브 구성에서 자바스크립트 런타임으로, 그들이 미스터리적으로 느껴지게 만듭니다. Expo 개발자 클라이언트 문제 해결 동영상.
클라이언트가 메트로와 연결되지 않을 때
이 문제가 가장 많은 시간을 소모하는 이유는 앱이 종종 정상적으로 작동하는 동안 앱이 깨진 것처럼 보이기 때문입니다.
먼저 확인하세요:
- 같은 네트워크 가정: 디바이스와 랩톱은 격리된 세그먼트에 앉아 있어도 연결된 것처럼 보일 수 있습니다.
- VPN 간섭: 기업 또는 개인 VPN은 Metro가 잘 수용하지 못하는 방식으로 트래픽을 재구성할 수 있습니다.
- 화면 규칙: 보안 도구는 개발 트래픽을 차단할 수 있습니다. 하지만 명백하지 않습니다.
- 기업 장치 정책: 관리 장치가 종종 개발 도구가 의존하는 트래픽 패턴을 제한합니다.
If the project works in a simulator but not on a physical device, suspect the network before suspecting your React code.
앱 내에서 연결 오류를 디버깅하지 마세요. 먼저 장치가 실제로 Metro를 실행하는 머신에 접근할 수 있는지 확인하세요.
재빌드가 무작위로 보인다면
변경 사항이 즉시 나타나고 다른 변경 사항이 고집스럽게 나타나지 않는다는 느낌을 받는 것은 일반적인 문제입니다.
그것은 보통 팀이 재빌드 경계를 내부화하지 않았기 때문입니다.
| 증상 | 가능한 원인 | 해결 |
|---|---|---|
| JavaScript 업데이트 는 일반적으로 적용됩니다. | 기대되는 동작 | 기존 클라이언트에서 계속 작업하세요. |
| 새 네이티브 의존성이 나타나지 않습니다. | 원본 layer 변경 | 새 개발 빌드를 생성하세요 |
| 권한 관련 동작이 일관되지 않습니다 | 원본 config 변경 | 재빌드 및 재설치 |
| 한 팀원은 다른 동작을 보입니다 | 다른 클라이언트 바이너리 설치 | 같은 빌드에 맞춰서 |
이것은 워크플로우의 결함이 아닙니다. 이것은 워크플로우가 정확히 해야 할 일을 하고 있습니다.
빌드 실패 및 팀의 이탈
빌드가 실패할 때, 일반적으로 root cause는 다음 중 하나입니다:
- 의존성 불일치: 프로젝트의 나머지 부분과 패키지 버전이 일치하지 않습니다.
- Native 플러그인 가정: 프로젝트가 설정을 갖추지 않은 config 플러그인이 있습니다.
- 인증 정보 혼란: 팀 내에서 서명 또는 계정 접근이 일관되지 않습니다.
- 지속 시간 지역적 기대: 새로운 빌드가 필요할 때도 누군가가 최신 빌드가 필요하지 않다고 가정합니다.
Capgo의 개발자에 대한 공통 라이브 업데이트 문제와 해결책에 대한 기사입니다. 동일한 레슨, 다른 스택: 많은 '앱 버그'는 실제로 배포, 환경, 또는 버전 일치 버그입니다.
Expo 개발 클라이언트는 환경 신뢰성을 엔지니어링의 일부로 팀이 다루면 가장 잘 작동합니다. 후thought가 아닌. 그런 다음 설정이 예측 가능해지고, 예측 가능은 모바일 도구에서 원하는 것입니다.
팀이 Capacitor 앱도 배포하고 JavaScript, 자산 및 config 업데이트 Delivery를 기다리지 않고 제어된 방법으로 제공해야 한다면 Capgo Capacitor