앱이 완성되었습니다. 브라우저에서 깨끗하게 작동하고, UI가 올바르고, 핵심 흐름이 안정적입니다. 그런 다음 배포가 나타나고, 직관적인 Ionic 프로젝트를 세 가지 다른 릴리스 트랙으로 바꿔, 각 트랙에는自己的 도구, 서명 규칙, 검토 프로세스, 업데이트 전략이 있습니다.
그것이 시간을 많이 소모하는 곳입니다. 기능을 작성하는 것이 아니라, 네이티브 빌드, 웹 호스팅, 릴리스 자동화, 및 후속 릴리스 수정을 하나의 프로세스로 통합하는 것입니다. 사람들은 그것을 반복할 수 있어야 합니다. Ionic 앱 배포 iOS, Android, 및 PWA 전달을 별개의 프로젝트로 다루지 않고, 하나의 릴리스 시스템으로 다루면 Ionic 앱 배포가 가장 잘 작동합니다.
목차
- Ionic 앱이 완성되었습니다. 이제 무엇을 해야 하나요?
- 프로덕션에 대한 프로젝트 준비
- iOS 및 Android의 네이티브 배포
- PWA로 Ionic 앱을 배포하는 방법
- CI/CD PIPELINE을 사용하여 빌드를 자동화하세요
- Capgo를 사용하여 즉시 업데이트를 배송하세요
- 배포 관련 일반적인 문제와 최적화 방법
Ionic 앱이 빌드되었습니다. 이제 무엇을 해야 하나요?
대부분의 개발자는 같은 지점에 도달합니다. ionic serve 모든 것이 좋게 보인다, 로컬 API 호출이 작동하고 앱이 완료된 것처럼 느껴집니다. 완료된 것은 아닙니다. 브라우저 테스트만 통과했고, 서명되지 않았으며, App Store 리뷰, Play signing, 및 프로덕션 웹 호스팅과 같은 제약조건으로부터 분리된 것입니다.
프로덕션 배포는 질문을 바꿉니다. 앱이 렌더링되는지 여부를 묻는 대신, 배포는 다음을 묻습니다. 배포는 reproducible한 배ंडल을 확인하는지 여부네이티브 프로젝트가 동기화되는지 여부, 환경 변수가 깨끗하게 분리되는지 여부, 그리고 릴리스 후에 네이티브 오류를 수정할 수 있는지 여부, 그리고 스토어 재제출 스캔블을 생성하지 않고 오류를 수정할 수 있는지 여부
그것은 중요한 이유는 Ionic이 하이브리드 차선을 차지하기 때문입니다. 앱에는 웹层이 있지만, 설치, 서명, 검토 및 업데이트 방법은 여전히 네이티브 셸에 의해 결정됩니다. 배포를 생각보다 나중에 처리하는 팀은 일반적으로 플랫폼 간의 구성 drift,陈腐한 네이티브 프로젝트 및 취약한 수동 릴리스 단계와 같은 문제를 겪습니다. 배포를 잘 처리하는 팀은 모든 대상에 대해 하나의 릴리스 경로를 정의하고 각 플랫폼에 대한 명시적인 단계를 정의합니다.
일반적인 배포 라이프 사이클은 다음과 같습니다.
- 프로젝트 준비 이러한 Capacitor 구성, 앱 식별자, 아이콘, 환경 변수 및 프로덕션 빌드는 일관적이어야 합니다.
- 네이티브 릴리스 아티팩트 생성 Android 및 iOS를위한 플랫폼 도구를 사용하여 Ionic 명령만으로는 생성되지 않습니다.
- PWA 빌드 배포 즉시 브라우저 접근이 필요한 사용자에게 빌드를 배포합니다.
- 일상적인 부분을 자동화 빌드는 개발자가 체크리스트를 기억하는 한 개발자가 의존하지 않도록합니다.
- 릴리스 후 업데이트 계획 웹 자산 수정이 앱 스토어 검토를 기다리지 않도록합니다.
현재 앱이 여전히 '휴대폰 shell에서 열리는 웹 앱'처럼 느껴진다면, 그 문제를 먼저 해결하세요. 그 전환에 대한 유용한 참고 자료는 이 __CAPGO_KEEP_0__에 대한 안내서입니다. 웹 앱을 Capacitor로 변환하는 방법에 대한 안내서.
첫 번째 성공적인 스토어 제출은 교과서적인 지식보다는 discipline에서 나온다.
프로덕션에 대한 준비
빌드를 생성하기 전에 프로젝트를 릴리스 후보로 다루세요. 대부분의 깨진 배포는 개발 환경에서 무해한 작은 불일치 때문입니다. 하지만 프로덕션에서 비용이 많이 들 것입니다.

환경 설정부터 시작하세요
기본적인 것을 먼저 실행하세요:
ionic doctor
npm ci
npx cap doctor
ionic doctor 일반적인 CLI와 환경 문제를 잡아내는 데 도움이 됩니다. npm ci 릴리스 작업에 더 좋습니다. 왜냐하면 그것은 lockfile에서 정확히 커밋된 것과 동일한 설치를 설치하기 때문입니다. npm install 플러그인과 플랫폼의 불일치를 미리 발견하여 Xcode 또는 Android Studio가 그것들을 더 읽기 어려운 오류로 변환하는 것을 방지합니다. npx cap doctor __CAPGO_KEEP_0__
빌드 시 가능한 한 깨끗한 상태에서 릴리스 빌드를 사용하십시오. 앱이 로컬 패치, 삭제된 폴더, 또는 수동으로 편집된 네이티브 파일로만 빌드되는 경우, 배포 프로세스가 아직 안정적이지 않습니다.
매번 수행할 가치 있는 몇 가지 확인 사항이 있습니다:
- 앱 ID를 확인하십시오.. 변경 시
appId스토어 및 서명 혼란을 일으킬 수 있습니다. - 플러그인 상태를 확인하십시오.. 네이티브 플러그인 변경은 일반적으로 새로운 싱크가 필요하고, 때로는 플랫폼을 다시 열 필요가 있습니다.
- 환경 주입을 검토하십시오.. API 엔드포인트, 키 및 기능 플래그는 환경별 구성에서 오는 것이 INLINE 상수에서 오는 것보다 좋습니다.
릴리스 대상 간에 무엇이 달라야 하는지 더 깊게 이해하기 위해서는 개발 vs 프로덕션 차이점에 대한 이 기사 Capacitor 앱의 개발 vs 프로덕션 차이점에 대한 이 기사 실용적인 참고 자료입니다.
Capacitor 설정을 잠그세요.
열기 capacitor.config.ts 프로덕션 인프라와 앱 메타데이터와 같이 검토하세요.
일반적인 파일은 다음과 같습니다.
import type { CapacitorConfig } from '@capacitor/cli';
const config: CapacitorConfig = {
appId: 'com.example.myapp',
appName: 'My App',
webDir: 'www',
bundledWebRuntime: false,
};
export default config;
즉시 중요합니다.
| 설정 | 왜 중요합니까 | 일반적인 실수 |
|---|---|---|
| 앱 아이디 | 스토어와 서명에 사용되는 네이티브 패키지 식별자 | 시작 프로젝트에서 남겨진 플레이스 홀더 |
| 앱 이름 | 원격 앱 이름 | 개발 라벨을 사용하고 변경하지 않은 경우 |
| webDir | Directory Capacitor native 프로젝트로 복사합니다. | Capacitor 디렉토리 |
__CAPGO_KEEP_0__이 예상하는 것과 다른 출력 폴더로 빌드하는 경우
개발 중에 로컬 개발 서버를 사용하는 경우, 프로덕션 설정에서 Native 빌드가 로컬 서버로 가도록 설정하지 않도록 확인하세요. 단 하나의 실수 때문에 '개발서버에서 작동, 릴리즈에서 화면이 비어있는' 문제가 발생합니다. 실용적인 규칙:
릴리즈 빌드가 로컬 서버 설정에 의존하는 경우, 릴리즈 빌드가 아닙니다.
자산을 한 번 생성하세요
In current Capacitor workflows, many teams use the official asset tooling through the CLI ecosystem. The exact package can vary by stack version, but the discipline is the same: keep one canonical icon and one canonical splash source under version control, generate outputs, then review the results inside Xcode and Android Studio before submission.
현재 __CAPGO_KEEP_0__ 워크플로우에서 많은 팀이 공식 자산 도구를 통해 __CAPGO_KEEP_1__ 생태계를 사용합니다. 스택 버전에 따라 패키지의 정확한 이름은 달라지지만, 원칙은 동일합니다: 하나의 표준 아이콘과 하나의 표준 스플래시 소스를 버전 관리 하에 두고, 출력을 생성한 후 Xcode와 Android Studio에서 결과를 검토하세요. 제출하기 전에.
A production pass는 다음과 같이 구성됩니다:
- 웹 자산을 프로덕션 모드에서 빌드하세요.
- 자연스럽게 네이티브 프로젝트를 동기화하세요.
- 각 네이티브 IDE에서 앱 이름, 아이콘, 권한, 서명 설정을 수동으로 확인하세요.
- 스토어에 패키지한 것을 전혀 하지 않고 물리적 장치에서 테스트하세요.
iOS 및 Android용 네이티브 배포
네이티브 배포는 Ionic 앱이 “웹”에서 플랫폼 규칙에 응답하기 시작하는 곳입니다. 웹 번들만 공유할 수 있지만, 서명, 패키징 및 스토어 요구 사항이 프로세스에 들어가면 Android와 iOS는 빠르게 분기됩니다.

웹层를 먼저 빌드하세요.
네이티브 패키징에 접근하기 전에 항상 최신 웹 자산을 생성하세요:
ionic build
npx cap sync
어떤 팀은 ionic build --prod 습관으로 말합니다. 현대 프로젝트에서는 프레임워크 도구에 따라 정확한 프로덕션 동작이 달라지지만, 원칙은 변하지 않습니다: 최적화된 릴리스 빌드를 생성한 후, 그 것을 네이티브 플랫폼에 동기화하세요.
Sync 후에 네이티브 프로젝트를 직접 열 수 있습니다:
npx cap open android
npx cap open ios
이 또한 네이티브 설정을 검토하는 좋은 시점입니다. Capacitor 앱의 안드로이드 설정 프로젝트가 여전히 불안정한 네이티브 설정을 가지고 있다면.
안드로이드 릴리스 워크플로우
안드로이드 릴리스 경로는 일반적으로 iOS보다 더 예측 가능하지만, 서명이 편리하게 설정된 경우에만 깨집니다.
업로드 키 스토어를 한 번 생성하고 안전하게 저장하세요:
keytool -genkeypair -v -keystore upload-keystore.jks -keyalg RSA -keysize 2048 -validity 10000 -alias upload
키 스토어 파일, 별칭, 비밀번호를 안전한 비밀 저장소에 저장하세요. 그들을 커밋하지 마세요. 그들을 팀 채팅에 남겨서는 안 됩니다. 누군가가 그들을 저장했다고 가정하지 마세요.
그런 다음 Gradle에 서명 연결을 설정하세요. 팀들은 이 설정을 build.gradle Play Store 제출을 위해 일반적으로 원하는 릴리스 아티팩트는 signingConfigs 블록과 연결된 릴리스 빌드 타입입니다.
이 항목은 안드로이드 릴리스 워크플로우에 대한 설명입니다. AABAndroid Studio에서 signed bundle을 생성하기 위해 메뉴 경로를 사용하고 릴리스 버전을 선택한 다음 앱 번들을 내보내세요. 명령줄 빌드를 선호하는 경우 Gradle도 서명이 구성되면 이를 처리할 수 있습니다.
자주 발생하는 안드로이드 오류는 다음과 같습니다:
- 잘못된 키 스토어 비밀번호 잘못된 키 스토어 비밀번호는 더 드라마틱한 서명 실패를 유발합니다.
- 디버그 서명 잔해 디버그 서명 잔해는 로컬에서 설치되지만 스토어 릴리스에 유효하지 않은 빌드를 생성합니다.
- 플러그인 비동기 플러그인 비동기는 누군가 네이티브 플러그인 의존성을 변경하고 __CAPGO_KEEP_0__을 건너뛰었을 때 발생합니다.
npx cap sync. - 패키지 이름 불일치 패키지 이름 불일치로 인해 Play Console 앱 엔트리 생성 시 다른 식별자로 생성된 경우 문제가 발생합니다.
이 패턴은 잘 작동합니다: 웹 code을 커밋하고 웹层를 빌드한 다음 네이티브를 싱크하고 네이티브 프로젝트에서 릴리스 아티팩트를 빌드한 다음 exact commit hash를 함께 생성된 번들과 함께 보관합니다.
iOS 배포 워크플로우
iOS는 더 엄격하고, 대부분의 배포 문제는 서명 식별자 혼란 때문이 아니라 code 문제 때문입니다.
Xcode에서 프로젝트를 열고 바로 서명 및 기능으로 이동하세요. 선택한 팀이 올바른지 확인하고, 앱 레코드와 배포를 위한 프로비전을 매치하는 앱 식별자가 올바른지 확인하고, 자동 서명이 기대대로 작동하거나 의도적으로 수동 프로비전으로 대체되었는지 확인하세요.
일반적으로 다음 요소와 관련된 문제를 해결해야 합니다:
| 아이템 | 무엇을 하는지 | 어디서 문제가 발생하는지 |
|---|---|---|
| 앱 식별자 | 앱을 앱 스토어 레코드와 프로비전과 연결합니다. | Apple이 기대하는 것과 다릅니다. |
| 인증서 | 인증서를 식별합니다. | 설치된 인증서가 잘못되거나 만료되었습니다. |
| 배포 프로파일 | 애플리케이션과 관련된 특정 컨텍스트에 대한 빌드에 대한 권한을 부여합니다. | 특정 앱과 컨텍스트에 대한 빌드를 승인합니다. |
프로파일이 앱 ID 또는 팀과 일치하지 않습니다. Archive아카이브
. 아카이브가 완료되면, Organizer 창을 사용하여 App Store Connect로 유효성 검사하고 배포합니다.
Xcode가 서명이 깨진다고 말한다면, 정확한 번들 ID, 팀, 및 프로파일 이름을 읽기 전에 변경하지 마십시오. 인증서를 임의로 다시 생성하는 것은 문제를 더 악화시킬 수 있습니다.
이 가이드는 첫 번째 아카이브 및 제출 전에 유용한 기초 지식을 제공합니다.
Ionic 앱 배포
Ionic 앱을 PWA로 배포하는 방법
PWA 경로를 통해 Ionic 앱은 사용자에게 가장 빠른 경로를 제공합니다. 스토어 리뷰가 필요하지 않습니다. 서명식이 필요하지 않습니다. 설치의 마찰이 필요하지 않습니다. 브라우저에서 즉시 접근이 필요한 사람들에게.
속도는 native 앱이 주된 채널로 남아 있는 경우에도 유용합니다. 많은 팀은 내부 도구, 로그인 전 경험, 관리자 패널, 또는 스토어 설치가 불필요한 저항을 추가하는 시장에서 PWA를 병렬 배포 표면으로 사용합니다.
웹을위한 의도적인 빌드
PWA는 프로덕션 웹 빌드와 시작됩니다:
ionic build
중요한 부분은 명령어 자체가 아니라, 출력이 최적화되어 있으며, 프로덕션 서비스를 향하고 있으며, 배포할 최종 자산과 매니페스트를 포함하는지 여부입니다.
배포하기 전에 확인해야 할 파일
index.htmlshould 프로덕션 빌드의 올바른 자산을 참조해야 합니다.manifest.webmanifestshould 프로덕션 이름, 아이콘, 표시 설정이 포함되어야 합니다.- 서비스 워커 파일 만약 오프라인 캐싱을 사용할 예정이라면 존재해야 합니다.
- 환경 출력 라이브 엔드포인트 대신 로컬 또는 스테이징 서비스를 참조해야 합니다.
오프라인 기능을 사용하기 전에 주의 깊게 설정해야 합니다.
Ionic 스택이 Angular을 사용하는 경우 Angular 서비스 워커가 일반적으로 오프라인 지원과 캐싱을 제공합니다. 강력하지만 쉽게 잘못 설정할 수 있습니다.
캐싱이 너무 과도하게 되면 사용자는 outdated 데이터에 갇히게 됩니다. 캐싱이 너무 적게 되면 앱이 네트워크가 불안정할 때도 느려집니다. 올바른 설정은 앱에 따라 달라집니다. 마케팅 목적의 셸은 캐싱을 많이 사용할 수 있지만, 빠르게 변경되는 운영 데이터를 표시하는 대시보드에는 보수적인 전략이 필요합니다.
오프라인 지원을 제품 결정으로 다루세요. 일부 화면은 캐싱을 사용하고 일부는 항상 최신 데이터를 가져와야 합니다.
실제 시나리오를 테스트하세요. Lighthouse-style 가정만으로는 충분하지 않습니다. 앱을 한번 열고, 장치를 연결 해제하고, 다시 시작한 후, 여전히 작동하는 것을 확인하세요. 그리고 다시 연결하고, 서비스 워커가 사용자가 스테일 UI에 갇히지 않도록 최신 데이터를 업데이트하는지 확인하세요.
호스팅을 기반으로 선택하세요.
Ionic PWAs의 경우 정적 호스팅 플랫폼이 일반적으로 충분합니다. 팀이 가장 많이 사용하는 옵션은 Netlify, Vercel, Firebase Hosting입니다.
실용적인 트레이드 오프를 보세요:
| 플랫폼 | 최적의 적합도 | 감시하십시오 |
|---|---|---|
| Netlify | 정적 배포 및 미리보기 | 리다이렉션 동작이 명시적으로 검토되어야 함 |
| Vercel | Git 기반 워크플로우를 이미 사용하는 프론트엔드 팀 | 어떤 앱 라우팅 설정이 조정되어야 함 |
| Firebase Hosting | Firebase 서비스를 이미 사용하는 팀 | Firebase가 너무 많은 일을 할 경우 프로젝트 구조가 혼잡해질 수 있음 |
어떤 호스팅 서비스라도 다음과 같은 단순한 배포 흐름을 보입니다: 저장소에 연결, 빌드 명령어 설정, 출력 디렉토리 설정, 환경 변수 추가, 클라이언트 사이드 라우팅이 리프레시 시 깨지지 않도록 리쓰라이트 규칙을 검증합니다.
라우터 기반 네비게이션을 사용하는 아이오닉 앱의 경우 호스팅 설정은 일치하지 않는 경로를 앱의 진입점으로 되돌려 보내야 합니다. 리쓰라이트가 구성되지 않은 경우 홈 페이지가 작동하고 깊이 있는 링크가 실패합니다. 이는 PWA 배포의 가장 일반적인 실수 중 하나입니다.
CI/CD pipeline을 사용하여 빌드 자동화
수동 릴리즈 작업은 처음 한 번은 괜찮지만, 그 이후로는 부담이 됩니다. 누군가가 sync 단계를 잊어버리거나, 누군가가 더러운 branch에서 빌드하거나, 누군가가 잘못된 config로 서명하면, 생성된 아티팩트는 신뢰할 수 없습니다.
CI/CD는 릴리즈 시퀀스를 code로 변환하여 이 문제를 해결합니다. 릴리즈 시퀀스를 메모리에 의존하지 않고, 앱이 빌드, sync, 테스트, 패키징되는 과정을 정확하게 정의합니다.

pipeline에 포함해야 하는 항목
Ionic 프로젝트의 유용한 pipeline은 다음 작업을 순서대로 수행합니다:
- lock파일에서 의존성을 설치합니다.
- 웹 앱을 빌드합니다.
- Capacitor 플랫폼을 sync합니다.
- 테스트를 실행하거나 적어도 기본 검증을 수행합니다.
- 목표 플랫폼에 대한 네이티브 아티팩트를 생성합니다.
- 빌드 출력을 저장하거나 배포합니다.
그런 흐름은 좋은 인프라 습관이 중요합니다. 빌드 러너, 아티팩트 저장소 또는 배포 단계가 약한 느낌이 들면, 작은 기업에 대한 필수 클라우드 최적화에 대한 이 안내서를 읽어보길 권장합니다. 작은 기업에 대한 필수 클라우드 최적화 작은 기업에 대한 필수 클라우드 최적화는 모바일 배포 PIPELINE에 동일한 운영적 규율을 적용하기 때문에 읽어보면 좋습니다.
실용적인 GitHub 액션
GitHub 액션은 많은 이온 팀이 이미 code을 GitHub에 호스팅하고 있기 때문에 좋은 기본값입니다. 아래의 워크플로우는 안드로이드 릴리스 빌드의 전체 형태를 보여줍니다.
name: Android Release Build
on:
push:
branches:
- main
jobs:
build-android:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20
- name: Install dependencies
run: npm ci
- name: Build web assets
run: npm run build
- name: Sync Capacitor
run: npx cap sync android
- name: Setup Java
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 17
- name: Build Android bundle
run: cd android && ./gradlew bundleRelease
이것은 릴리스를 자동으로 서명하지 않습니다. 키스토어 자료와 Gradle 서명 구성이 제공되지 않는 한. 그건 의도적으로. 서명은 공개 워크플로우 파일에서 분리되어야 합니다.
모바일 중심 구현 경로를 원한다면, 이 __CAPGO_KEEP_0__ 앱에 대한 CI/CD 설정에 대한 포스트는 직접 관련이 있습니다. CI/CD 설정을 위한 Capacitor 앱의 구축 모바일 CI/CD의 가장 어려운 부분은 YAML을 쓰는 것이 아닙니다. 미래의 사고를 일으키지 않는 비밀을 처리하는 것입니다.
다음과 같은 경우에 레포지토리 또는 조직 비밀을 사용하세요:
__CAPGO_KEEP_0__
__CAPGO_KEEP_1__
- Keystore 비밀번호
- Key 별명
- 인코딩된 키스토어 파일
- API 토큰이 릴리즈 중에 사용됩니다.
- 환경에 따라서 빌드하는 값
안드로이드에서 일반적인 패턴은 키스토어를 base64로 인코딩하고, 인코딩된 문자열을 비밀로 저장하고, 워크플로우 중에 다시 재구성하고, Gradle에 재구성된 파일을 가리키는 것입니다. 동일한 원칙이 서명 자료에 적용됩니다: 빌드 시에 주입하고, 저장소에 저장하지 마세요.
CI/CD는 인간의 오류를 제거하고, 숨겨진 민간 지식의 중앙화를 막아야 합니다. 만약에 한 명의 개발자가 릴리즈 비밀을 어떻게 연결하는지 이해한다면, pipeline은 여전히 약합니다.
실용적인 추천: 유효성 검사와 릴리즈를 분리하세요. pull request는 설치, lint, 테스트, 웹 빌드를 실행하세요. 보호된 branch 또는 수동 승인 게이트가 signed production artifact를 트리거하세요. 그럼으로써, normal 개발을 위해 pipeline이 빠르며, 실제 배포를 위해 제어됩니다.
Capgo 업데이트를 실시간으로 배포하세요.
저장소 릴리즈는 네이티브 code 변경, 권한 변경, 앱 바이너리 수정 등이 필요한 경우에만 사용하세요. 텍스트 수정, 스타일 수정, JavaScript 버그 등은 웹层에만 존재하는 경우에는 저장소 릴리즈가 좋은 선택이 아닙니다.
그것은 OTA 업데이트 이오닉과 Capacitor 프로젝트에서 중요한 문제입니다. 그들은 팀이 설치된 앱에 업데이트된 웹 자산을 배포할 수 있도록 해줍니다. 그들은 스토어 리뷰를 기다리지 않고, 변경 사항이 네이티브 셸이 이미 지원하는 범위 내에 있다면, 설치된 앱에 업데이트된 웹 자산을 배포할 수 있습니다.

OTA 업데이트가 처리해야 하는 것
OTA 업데이트를 사용하여 다음 변경 사항을 처리하세요:
- JavaScript 논리 수정 새로운 네이티브 플러그인을 필요로하지 않는 수정
- 레이아웃이 깨진 경우 CSS 조정 브랜드 업데이트
- 문구, 레이블, 법적 텍스트와 같은 복사 변경 앱이 이미 로드할 수 있는 정적 자산 교체
- 이미 앱이 로드할 수 있는 정적 자산 교체 앱이 이미 그들을 로드하는 방법을 알고 있을 때.
실제 네이티브 변경을 대신하는 데 사용하지 마세요. 새로운 네이티브 의존성을 추가하거나 권한을 변경하거나 스토어 검토된 바이너리 내에 변경 사항을 수정하려면 일반 스토어 릴리스를 배포하세요.
이 경계는 중요합니다. OTA의 전체 목표는 속도와 제어이며, 플랫폼 규칙을 무시하는 것은 아님에 유의하세요.
첫 번째 사고 이전에 채널을 설정하세요.
OTA 워크플로우의 가장 좋은 것은 채널입니다. 프로덕션 채널은 사용자에게 안정적인 업데이트를 제공합니다. 스테이징 또는 베타 채널은 내부 테스터가 실제 설치된 앱에서 업데이트를 검증할 수 있도록 업데이트를 먼저 받습니다.
이 패턴은 가장 나쁜 OTA 실수를 피하는 데 도움이 됩니다. 즉, 긴급한 수정을 위해 모든 사람에게 직접 푸시하는 것입니다. 긴급한 수정도 여전히 경계를 필요로 합니다.
일반적인 설정은 플랫폼 문서에 따라 플러그인 설치와 앱 초기화, 환경에 따라 채널 할당으로 시작됩니다. 앱 스토어-안전한 OTA 업데이트에 대한 기사 는 올바른 경계를 설정하는 데 필요한 참조점입니다.
작은 수정을 푸시하려면 네이티브 code를 건드리지 마세요.
업데이터가 통합된 후 실제 워크플로우는 간단해집니다. 업데이트된 웹 자산을 빌드하고 해당 채널에 게시한 다음 앱이 시작할 때 업데이트를 적용하는 데 필요한 정책에 따라 앱이 업데이트를 가져와 적용하세요.
A 실제 예는 모바일 레이아웃 회귀에 대한 핫픽스입니다.
- 아이온틱 앱의 CSS를 조정합니다.
- 생산 웹 빌드를 실행합니다.
- 결과물로 얻은 번들을 스테이징 채널에 게시합니다.
- 설치된 빌드에 테스트합니다.
- 같은修정을 프로모션 또는 게시합니다.
OTA가 없으면, 나쁜 웹层 버그는 새로운 바이너리의 사용자 수락과 스토어 리뷰를 기다리게 합니다. 그러나 OTA를 사용하면, 영향을 받은 파일을 수정하고, 올바른 대상에게 배포하고, 제어된 방식으로 롤아웃을 관찰할 수 있습니다.
빠른 업데이트는 안전하게 타겟팅하고, 필요할 때 롤백할 수 있어야 합니다.
OTA에서 가장 이익을 얻는 팀은 무모한 팀이 아닙니다. 그들은 명확한 릴리스 경계, 이름이 지정된 채널, 그리고 웹层修정을 네이티브 릴리스와 별도의 스트림으로 다루는 규칙적인 팀입니다.
일반적인 배포 문제와最佳 관행
대부분의 배포 문제는 독특하지 않습니다. 그들은 기한 압박하에 동일한 실수를 반복하는 이유로 팀 간에 반복됩니다.
반복적으로 나타나는 실패
안드로이드 서명 오류는 일반적으로 잘못된 비밀번호, 잘못된 별칭, 또는 릴리스 구성에서 사용된 잘못된 키 스토어 파일로 인해 발생합니다. 그럴 때는 암호를 무작위로 회전하지 말고 파일, 별칭, 비밀 값의 유효성을 먼저 확인하세요.
iOS 빌드 실패는 일반적으로 앱 식별자, 팀 선택, 인증서 및 배포 프로파일의 불일치로 인해 발생합니다. Xcode의 오류 메시지는 밀도가 높아 보일 수 있지만 실제로는 일치하지 않는 값이 하나 이상 있습니다.
설치 후 빈 화면이 또 다른 고전입니다. 일반적인 원인은 다음과 같습니다.
- 개발 서버에 대한 프로덕션 앱 배포된 자산 대신
- 웹 자산이 다시 빌드되지 않은 경우 before
npx cap sync - 자연 프로젝트에 동기화되지 않은 경우 실제 릴리스 빌드에서 런타임 환경 값이 누락된 경우
- 릴리스 습관이 재작업을 방지하는 경우 개발 서버에 대한 프로덕션 앱
배포된 자산 대신 사용하는 경우
최고의 관행은 재미없지만, 그들이 왜 효과가 있는지 이유가 있습니다.
환경 설정에 대한 단일 참조 소스를 유지하고, 깨끗한 branch에서 빌드하고, 릴리스 커밋을 태그하고, 저장소 외부에 서명 자료를 저장하고, 시뮬레이터와 브라우저 탭 이외의 실제 장치에서 설치된 빌드를 테스트하고, 스크린샷, 개인 정보 답변, 또는 누락된 복사본이 없는 경우 배포가 지연되지 않도록 스토어 메타데이터를 미리 준비하세요.
자동화가 구축된 후에도 많은 고통을 피하기 위한 한 가지 더 좋은 습관은 릴리스 체크리스트를 작성하는 것입니다. Pipelines는 빌드 아티팩트를 빌드하지만, 앱 설명이 최신인지, 지원 URL이 올바른지, 또는 최신 네이티브 권한 문자열이 앱의 동작과 일치하는지 확인하지 않습니다.
팀이 Capacitor 앱을 배포하고, 런칭 후 웹层 수정을 안전하게 전달하고 싶다면, Capgo __CAPGO_KEEP_0__