본문 바로가기

주요 변경 사항

이 문서에서는 버전별 채널을 사용해 앱의 breaking changes를 처리하는 방법을 설명합니다. 이 방식으로 앱의 여러 버전을 유지하면서 사용자가 호환되는 업데이트를 받도록 보장할 수 있습니다.

다음과 같은 상황을 가정해 보겠습니다:

  • 앱 버전 1.2.3 (이전 버전) - production 채널 사용
  • 앱 버전 2.0.0 (breaking changes가 포함된 새 버전) - v2 채널 사용
  • Live update 1.2.4 (1.2.3과 호환됨)
  • Live update 2.0.1 (2.0.0 호환)

전략: 메이저 버전에는 항상 defaultChannel 사용

“전략: 메이저 버전에는 항상 defaultChannel 사용” 섹션

권장 접근 방식: 설정 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 add v2

2. 버전 2.0.0용 Capacitor 설정 업데이트

“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 브랜치 관리

“3. 개별 Code 브랜치 관리” 섹션

앱 버전 간 호환성을 유지하려면 별도의 git 브랜치를 생성하세요:

터미널 창
# 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

중요: 자신에게 없는 네이티브 code/API를 기대하는 구버전 앱에 JavaScript bundle을 푸시하지 마세요. 항상 적절한 브랜치에서 업데이트를 빌드해야 합니다:

  • v1-maintenance 브랜치: 1.x 앱 업데이트용 (production 채널)
  • main 브랜치: 2.x 앱 업데이트용 (v2 채널)

4. 각 채널에 Bundle 업로드

“4. 각 채널에 Bundle 업로드” 섹션
터미널 창
# 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
터미널 창
# Allow apps to self-assign to v2 channel
npx @capgo/cli channel set v2 --self-assign

앱 스토어에 2.0.0 버전을 빌드하고 배포하세요. 이 버전을 다운로드하는 모든 사용자(신규 사용자 또는 업그레이드하는 기존 사용자)는 앱 번들에 설정되어 있으므로 자동으로 v2 채널을 사용합니다.

미래 버전으로 확장하기

“미래 버전으로 확장하기” 섹션

더 많은 breaking changes가 포함된 3.0.0 버전을 릴리스할 때:

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

이제 모든 버전으로 업데이트를 푸시할 수 있습니다:

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

7. 정리 (마이그레이션 후)

“7. 정리 (마이그레이션 후)” 섹션

모든 사용자가 2.x 버전으로 마이그레이션을 완료하면 (3~4개월 예상):

  1. 제거 defaultChannel 사용 중인 Capacitor 설정에서
  2. v2 채널을 삭제하세요:
터미널 창
npx @capgo/cli channel delete v2
  1. v1-maintenance 브랜치를 삭제하세요:
터미널 창
git branch -d v1-maintenance
git push origin --delete v1-maintenance

배포 전 항상 각 채널에서 업데이트를 철저히 테스트하세요.

Version 1.x 업데이트 유지 관리

“Version 1.x 업데이트 유지 관리” 섹션

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

  1. v1-maintenance 브랜치로 전환하세요:
터미널 창
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

Breaking Changes에서 계속

“Breaking Changes에서 계속” 섹션

사용 중이라면 주요 변경 사항 채널 라우팅과 단계적 배포를 계획하려면, 다음을 연결하세요: 채널 Channels의 구현 세부 사항은 다음을 참고하세요: 채널 Channels의 구현 세부 사항은 다음을 참고하세요: 채널 Channels의 구현 세부 사항은 다음을 참고하세요: Beta Testing 솔루션 Beta Testing 솔루션의 제품 워크플로우를 위한, 그리고 버전 타겟팅 솔루션 Version Targeting Solution의 제품 워크플로우용.