메인 콘텐츠로 건너뛰기
튜토리얼

Swift Package Manager로 Capacitor 앱을 마이그레이션하는 방법

기존 Capacitor iOS 앱을 CocoaPods에서 Swift Package Manager로 마이그레이션하는 방법을 배워보세요. iOS 프로젝트에서 어떤 변경 사항이 있는지 확인하고 마이그레이션을 검증하는 방법을 알아보세요.

마틴 도나디유

마틴 도나디유

콘텐츠 마케터

Swift Package Manager로 Capacitor 앱을 마이그레이션하는 방법

Capacitor 8은 Swift Package Manager (SPM)로 iOS 프로젝트를 생성합니다. 기존 앱이 CocoaPods를 사용하고 있다면도 마이그레이션할 수 있지만, 앱에 native iOS 커스터마이징이 얼마나 많은지에 따라 가장 안전한 경로는 달라집니다.

이 안내서에서는 변경 사항, 백업해야 하는 것, 그리고 두 가지 실제 마이그레이션 경로인 Capacitor 마이그레이션 어시스턴트를 사용하는 방법과 iOS 프로젝트를 SPM로 다시 구축하는 방법을 안내합니다.

왜 지금 마이그레이션해야 하나요

CocoaPods는 읽기 전용 트렁크 방향으로 이동하고 있습니다. 현재 계획은 CocoaPods 트렁크가 새로운 podspec을 받지 않도록 년 12월 2일기존 빌드는 계속 작동해야 하지만, 새로운 릴리즈와 의존성 업데이트가 트렁크에 의존한다면

SPM은 Capacitor도 마이그레이션 방향입니다. Capacitor은 CocoaPods 또는 SPM를 선택할 수 있는 지원을 Capacitor 6부터 제공했으며, Capacitor 8은 iOS SPM 프로젝트를 기본 템플릿으로 생성합니다.

Capacitor SPM 프로젝트에서 변경 사항은 무엇인가요

CocoaPods에서 SPM으로 마이그레이션하면 iOS 의존성层을 대체합니다. 웹 앱, Android 프로젝트, 그리고 대부분의 Capacitor 워크플로우 명령은 동일하게 유지됩니다.

CapApp-SPM은 Podfile을 대체합니다.

CocoaPods 앱에서 iOS 의존성을 연결하는 것은 ios/App/Podfile, Podfile.lock, Pods/In a CocoaPods app, iOS dependencies are wired through .xcworkspace.

In SPM 앱에서, Capacitor은 로컬 패키지 이름을 생성합니다. CapApp-SPM. This package becomes the central place where Capacitor references your native iOS plugin dependencies. The Capacitor CLI updates CapApp-SPM debug.xcconfig은 Pods 구성이 대체됩니다.

이동 보조 도구는 또한 생성된

파일을 생성합니다. 이 파일에는 CocoaPods가 생성한 xcconfig 파일을 통해 제공하던 빌드 설정이 포함됩니다. debug.xcconfig이동 후에, 보조 도구가 알려주면 Xcode 프로젝트 구성에

을 추가해야 할 수 있습니다. debug.xcconfig 모든 플러그인은 SPM을 지원해야 합니다.

CocoaPods와 SPM을 동시에 사용할 수 없습니다. iOS 프로젝트에서 이전에 SPM을 사용한 경우, 이전에 사용한 모든 플러그인과 Cordova 플러그인을 확인해야 합니다.

You cannot mix CocoaPods and SPM in the same Capacitor iOS project. Before migrating, check every Capacitor and Cordova plugin in package.json.

을 통해 변환할 수 있지만, 더 복잡한 Objective-C와 Swift 레이아웃을 가진 플러그인은 수동 작업이 필요할 수 있습니다. capacitor-plugin-converter__CAPGO_KEEP_0__

백업을 시작하기 전에 무엇을 먼저 백업해야 하나요

iOS 프로젝트를 건드리지 전에 현재 상태를 clean git branch에서 커밋하고, 앱이 의존하는 네이티브 파일 목록을 만드세요.

보존해야 하는 일반 파일 ios/App/ include: __CAPGO_KEEP_0__

  • App/Info.plist
  • App/AppDelegate.swift
  • App/SceneDelegate.swift, 앱이 하나 이상이면
  • App/Assets.xcassets/
  • App/Base.lproj/
  • App/App.entitlements
  • App/GoogleService-Info.plist, Firebase를 사용하는 경우
  • 커스텀 .xcconfig 파일
  • 인증 설정, 번들 식별자, 팀 ID, 및 프로비전 프로파일 설정

또한 표준 Capacitor 템플릿 외부에서 추가한 네이티브 Swift, Objective-C, 프레임워크, 확장, 또는 SDK 파일을 보존하세요.

Option 1: Capacitor 마이그레이션 어시스턴트를 사용하세요

iOS 프로젝트가 커스텀 네이티브 편집을 포함하고 있고, 이러한 편집을 잃고 싶지 않다면 이 경로를 사용하세요.

Capacitor 프로젝트의 루트에서 어시스턴트를 실행하십시오:

bunx cap spm-migration-assistant

어시스턴트는 CocoaPods 인프라를 제거하고, 로컬 패키지를 생성하고, 설치된 플러그인으로부터 패키지 참조를 생성하고, 생성된 SPM 구성 파일을 만듭니다. CapApp-SPM 작업이 끝나면 프로젝트를 열으십시오:

그 다음 어시스턴트가 출력한 수동 Xcode 단계를 따르십시오. 대부분의 프로젝트에서는 다음과 같습니다:

bunx cap open ios

로컬 패키지 의존성으로 추가하십시오.

  1. 생성된 를 앱 구성에 추가하십시오. CapApp-SPM 플러그인이 SPM으로 변환되지 못한 것에 대한 경고를 해결하십시오.
  2. CI를 업데이트하기 전에 앱을 Xcode에서 한 번 빌드하십시오. debug.xcconfig Xcode 프로젝트가 빌드된 후 다시 싱크하십시오:
  3. __CAPGO_KEEP_0__
  4. __CAPGO_KEEP_0__

__CAPGO_KEEP_0__

bunx cap sync ios

Option 2: iOS 프로젝트를 SPM으로 재구성

이 경로를 사용할 때, 디렉토리가 기본 __CAPGO_KEEP_0__ 템플릿과 가깝고, 이후에 커스텀 파일을 복원할 수 있는 경우 ios/ 디렉토리가 기본 Capacitor 템플릿과 가깝고, 이후에 커스텀 파일을 복원할 수 있는 경우에 이 경로를 사용하세요.

백업 섹션에 나열된 파일이 커밋되거나 안전한 곳에 복사된 것을 확인한 후, iOS 프로젝트를 SPM으로 재생성하세요.

rm -rf ios
bunx cap add ios --packagemanager SPM
bunx cap sync ios

네이티브 파일을 복원한 후 프로젝트를 열어보세요.

bunx cap open ios

이 경로는 재배치 마이그레이션보다 깨끗한 Capacitor 8 iOS 템플릿을 제공하지만, signing, entitlements, Firebase 파일, 네이티브 소스 변경, 커스텀 Xcode 설정을 다시 적용해야 합니다.

새로운 Capacitor 앱

새로운 앱의 경우, Capacitor 8는 iOS를 추가할 때 SPM을 기본으로 사용합니다.

bunx cap add ios

explicit 하게 필요한 경우, 패키지 매니저 옵션을 전달할 수 있습니다.

bunx cap add ios --packagemanager SPM

CI 업데이트하기

앱이 로컬에서 빌드되면, CocoaPods를 가정하지 않는 CI/CD를 업데이트하세요.

CocoaPods를 사용하는 단계를 제거하세요.

pod install

Also remove caches for:

  • ios/App/Pods
  • ios/App/Podfile.lock
  • CocoaPods specs repositories, if your workflow cached them only for this app

Keep your regular web build and Capacitor sync steps. A typical iOS job should install JavaScript dependencies, build the web assets, sync Capacitor, and then build with Xcode:

bun install --frozen-lockfile
bun run build
bunx cap sync ios

이동 계획서

이전 이동 전:

  • 새로운 Git branch를 생성하세요.
  • 현재 작업 앱을 커밋하세요.
  • 모든 플러그인이 SPM을 지원하는지 확인하세요.
  • 사용자 지정 iOS 파일 및 서명 설정을 기록하세요.
  • 이동 전 앱이 빌드되는지 확인하세요.

이동 중:

  • 실행 bunx cap spm-migration-assistant or re-scaffold ios/.
  • Add CapApp-SPM Xcode에 필요할 경우 추가.
  • Add debug.xcconfig Xcode에 필요할 경우 추가.
  • 애플리케이션에 특화된 네이티브 파일을 복원.
  • Run bunx cap sync ios.

이주 후:

  • Xcode에서 애플리케이션을 빌드하고 실행.
  • CocoaPods 파일을 제거.
  • Remove pod install CI에서 제거.
  • 릴리스 서명이 여전히 작동하는지 확인하세요.
  • 앱을 최소한 한 개의 시뮬레이터와 한 개의 실제 기기에서 실행한 후에 배포하세요.

문제 해결

__CAPGO_KEEP_0__ 앱을 Swift Package Manager로 마이그레이션하는 것은 iOS 의존성 연결을 대체하는 것에 대해 주로 다룹니다. bunx cap sync ios Xcode가 패키지를 해결할 수 없으면 Xcode에서 패키지 캐시를 초기화하고 다시 실행하세요.

마이그레이션 실패가 플러그인 때문인 경우 플러그인이 SPM 지원을 위한 최신 릴리스를 가지고 있는지 확인하세요. 관리하는 플러그인이 있는 경우 플러그인 패키지를 먼저 마이그레이션하고 앱 마이그레이션으로 돌아가세요.

앱이 로컬에서 빌드되지만 CI가 실패하는 경우 오래된 CocoaPods 가정에 대해 확인하세요. 일반적인 원인은 강제된 빌드 경로, 오래된 명령, 이전 빌드에서 캐싱된 것입니다. .xcworkspace 결론 pod install 앱을 최소한 한 개의 시뮬레이터와 한 개의 실제 기기에서 실행한 후에 배포하세요. Pods/ Xcode가 패키지를 해결할 수 없으면 Xcode에서 패키지 캐시를 초기화하고 다시 실행하세요.

마이그레이션 실패가 플러그인 때문인 경우 플러그인이 SPM 지원을 위한 최신 릴리스를 가지고 있는지 확인하세요. 관리하는 플러그인이 있는 경우 플러그인 패키지를 먼저 마이그레이션하고 앱 마이그레이션으로 돌아가세요.

Migrating a Capacitor app to Swift Package Manager is mostly about replacing the iOS dependency wiring. CapApp-SPM 의존성 참조를 모두 가져오고, debug.xcconfig 생성된 CocoaPods 빌드 구성이 대체되고 CI가 더 이상 필요하지 않습니다. pod install.

사용자 지정 iOS 프로젝트를 시작하려면 bunx cap spm-migration-assistant기본 템플릿과 가까운 프로젝트의 경우, SPM 재구성은 더 빠르고 이해하기 쉬운 경우가 많습니다.

자원

Capacitor 앱을 Swift Package Manager로 마이그레이션하는 방법에서 계속하세요.

__CAPGO_KEEP_0__ 앱을 Swift Package Manager로 마이그레이션하는 방법을 사용하는 경우 Capacitor 앱을 Swift Package Manager로 마이그레이션하는 방법을 참조하세요. 기업 마이그레이션과 운영을 계획하고 연결하세요. Capgo Enterprise Capgo Enterprise 아이오닉 엔터프라이즈 플러그인 대체 __CAPGO_KEEP_0__ Enterprise 플러그인 대체 Capgo 대체 Capgo 컨설팅 Capgo 컨설팅 Capgo 프리미엄 지원 Capgo 프리미엄 지원 for the product workflow in Capgo Premium Support.

Capacitor 앱에 대한 실시간 업데이트

웹层 버그가 활성화된 경우, 앱 스토어 승인까지 며칠 기다리지 않고 Capgo를 통해 패치를 배포하세요. 사용자는 배경에서 업데이트를 받으면서 네이티브 변경 사항은 일반적인 검토 경로에 남아 있습니다.

시작하기

블로그에서 최신 소식

Capgo는 전문적인 모바일 앱을 만들기 위해 필요한 최고의洞察력을 제공합니다.