내용으로 건너뛰기

파괴적인 변경

앱에서 발생하는 변경 사항을 처리하는 방법에 대한 설명입니다. 이 방법은 사용자가 호환 가능한 업데이트を受할 수 있도록 하면서 앱의 다양한 버전을 유지할 수 있도록 합니다.

예시 시나리오

예시 시나리오

예를 들어, 다음을 가정해 보겠습니다.

  • App 버전 1.2.3 (기존 버전) - 프로덕션 채널 사용
  • App 버전 2.0.0 (새 버전에서 변경 사항이 포함됨) - v2 채널 사용
  • Live 업데이트 1.2.4 (1.2.3과 호환됨)
  • 실시간 업데이트 2.0.1 (2.0.0과 호환)

전략: 주요 버전의 경우 기본 채널을 항상 사용

전략: 주요 버전의 경우 기본 채널을 항상 사용

권장 방법: 모든 주요 버전마다 defaultChannel 모든 주요 버전마다. 이로써 사용자 그룹에 대한 업데이트를 특정 그룹에 푸시할 수 있으므로 동적 채널 할당에 의존하지 않습니다.

// Version 1.x releases
defaultChannel: 'v1'
// Version 2.x releases
defaultChannel: 'v2'
// Version 3.x releases (future)
defaultChannel: 'v3'

1. 새로운 버전을 위한 채널 만들기

버전 1. 새로운 채널 만들기
터미널 창
# Create channel for version 2.x
npx @capgo/cli channel create v2

2. Capacitor 버전 2.0.0을 위한 설정 업데이트

2. 버전 2.0.0을 위한 Capacitor 설정 업데이트

애플 스토어 버전 2.0.0을 빌드하기 전에 Capacitor 설정을 업데이트 하세요.

capacitor.config.ts
import { CapacitorConfig } from '@capacitor/cli';
const config: CapacitorConfig = {
appId: 'com.example.app',
appName: 'Example App',
plugins: {
CapacitorUpdater: {
// ... other options
defaultChannel: 'v2' // All 2.0.0 users will use v2 channel
}
}
};
export default config;

3. 별도의 Code branch를 관리하십시오.

3. 별도 Code branch 관리하기

별도의 Git branch를 사용하여 앱 버전 간 호환성을 유지하세요:

터미널 창
# Create and maintain a branch for version 1.x updates
git checkout -b v1-maintenance
git push origin v1-maintenance
# Your main branch continues with version 2.x development
git checkout main

중요: JavaScript 번들을 업데이트하는 앱이 native code/API를 지원하지 않는 경우에는 절대 이전 버전의 앱에 푸시하지 마세요. 항상 적절한 branch에서 업데이트를 빌드하세요:

  • v1-maintenance branch: 1.x 앱 업데이트를 위한 (production 채널)
  • main branch: 2.x 앱 업데이트를 위한 (v2 채널)

4. 업데이트된 번들을 각 채널에 업로드

제목: 4. 업데이트된 번들을 각 채널에 업로드
터미널 창
# For 1.x updates: Build from v1-maintenance branch
git checkout v1-maintenance
# Make your 1.x compatible changes here
npx @capgo/cli bundle upload --channel production
# For 2.x updates: Build from main branch
git checkout main
# Make your 2.x changes here
npx @capgo/cli bundle upload --channel v2

5. 자체 할당을 활성화하세요

제목 “5. 자체 할당을 활성화하세요”
터미널 창
# Allow apps to self-assign to v2 channel
npx @capgo/cli channel set v2 --self-assign

주의

미래 버전으로 확장

미래 버전 확장

버전 3.0.0을 출시할 때 더 많은 깨진 변경 사항이 있을 때:

터미널 창
# Create channel for version 3.x
npx @capgo/cli channel create v3
// capacitor.config.ts for version 3.0.0
const config: CapacitorConfig = {
// ...
plugins: {
CapacitorUpdater: {
defaultChannel: 'v3' // Version 3.x users
}
}
};

현재 버전을 업데이트할 수 있습니다:

  • production 채널 → 버전 1.x 사용자
  • v2 채널 → 버전 2.x 사용자
  • v3 채널 → 버전 3.x 사용자

버전 2.x로 모든 사용자가 마이그레이션 완료되면 (3-4 개월 후):

  1. 삭제 defaultChannel Capacitor 설정에서 삭제
  2. v2 채널 삭제:
터미널 창
npx @capgo/cli channel delete v2
  1. v1-maintenance branch 삭제:
터미널 창
git branch -d v1-maintenance
git push origin --delete v1-maintenance

업데이트를 배포하기 전에 각 채널에서 반드시 철저히 테스트하십시오.

버전 1.x 업데이트 유지

버전 1.x 업데이트 유지

버전 1.x와 호환되는 업데이트를 보내려면:

  1. v1-maintenance branch로切换:
터미널 창
git checkout v1-maintenance
  1. 변경 사항을 적용하고 커밋하세요:
터미널 창
# Make 1.x compatible changes
git add .
git commit -m "Fix for v1.x"
git push origin v1-maintenance
  1. 생산 채널에 업로드:
터미널 창
npx @capgo/cli bundle upload --channel production