업그레이드
Flutter 앱을 새 Sophonz Flutter SDK 릴리스로 옮기는 방법 — 모든 항목의 Git 태그 변경, pubspec.lock 갱신, Android Gradle 플러그인과 iOS SophonzIO pod를 릴리스의 네이티브 버전에 맞추기 — 을 설명합니다.
릴리스는 sophonz-labs/sophonz-flutter-sdk의 vX.Y.Z Git 태그이며, 태그마다 GitHub Release가 있습니다. 여섯 패키지는 같은 버전을 씁니다. 업그레이드는 pubspec.yaml의 태그 변경이고, 릴리스 노트에서 네이티브 SDK 버전이 바뀌었다면 네이티브 버전도 함께 바꿉니다.
릴리스 찾기
- GitHub Releases 페이지에 모든 릴리스가 있습니다. 릴리스 노트에 그 릴리스가 기반한 Sophonz Android SDK와
SophonzIO버전이 적혀 있습니다. - 터미널에서는
git ls-remote --tags git@github.com:sophonz-labs/sophonz-flutter-sdk.git으로 확인합니다.
릴리스의 네이티브 버전은 해당 태그의 저장소 파일에도 있습니다.
| 네이티브 의존성 | 태그의 파일 |
|---|---|
| Android SDK와 Gradle 플러그인 | sophonz_android/android/gradle.properties(spz_android_sdk) |
CocoaPods용 SophonzIO | sophonz_ios/ios/sophonz_ios.podspec |
Swift Package Manager용 sophonz-apple-sdk | sophonz_ios/ios/sophonz_ios/Package.swift |
단계
1. 모든 태그 바꾸기
pubspec.yaml의 모든 ref는 dependencies와 dependency_overrides를 가리지 않고 같은 태그여야 합니다. 태그가 섞이면 해석에 실패하거나, 오버라이드가 항상 이기기 때문에 서로 다른 릴리스의 패키지가 조용히 섞입니다.
dependencies:
sophonz:
git: {url: git@github.com:sophonz-labs/sophonz-flutter-sdk.git, path: sophonz, ref: v0.2.0}
sophonz_dio:
git: {url: git@github.com:sophonz-labs/sophonz-flutter-sdk.git, path: sophonz_dio, ref: v0.2.0}
dependency_overrides:
sophonz:
git: {url: git@github.com:sophonz-labs/sophonz-flutter-sdk.git, path: sophonz, ref: v0.2.0}v0.2.0은 옮겨 갈 릴리스를 나타내는 예시입니다.
2. pubspec.lock 갱신
flutter pub upgrade sophonz sophonz_dio sophonz_go_router사용하는 Sophonz 패키지를 적습니다. pubspec.lock에 새 커밋이 기록되며, CI와 팀원이 같은 코드로 빌드하도록 이 파일을 커밋하세요.
3. Android: Gradle 플러그인 버전
spz_android_sdk가 바뀌었다면 Gradle 플러그인을 같은 버전으로 올립니다.
plugins {
id("io.sophonz.gradle") version "1.1.0" apply false
}1.1.0은 spz_android_sdk 값을 나타내는 예시입니다. 플러그인을 올리지 않으면 Flutter 플러그인이 기대하는 것보다 오래된 SDK가 앱에 들어갑니다. 디버그 실행에서는 Dart 쪽이 Android SDK 버전을 릴리스의 최소 버전과 비교해, 낮으면 WARNING: You are using Sophonz Android SDK …를 출력합니다.
android/app/src/main/sophonz-config.json도 새 SDK 버전의 Android 설정 레퍼런스와 비교하세요. 새 파서가 모르는 키는 빌드를 실패시킵니다.
4. iOS: SophonzIO 버전
CocoaPods라면 Podfile의 태그를 podspec에 적힌 SophonzIO 버전으로 바꾸고 pod를 갱신합니다.
pod 'SophonzIO', :git => 'https://github.com/sophonz-labs/sophonz-apple-sdk.git', :tag => 'v1.1.0'cd ios && pod update SophonzIOSwift Package Manager라면 sophonz_ios가 sophonz-apple-sdk를 정확한 버전으로 고정하므로 고칠 것이 없습니다. Xcode가 계속 이전 버전으로 빌드하면 flutter clean 후 다시 빌드하세요.
AppDelegate.swift와 Sophonz-Info.plist도 릴리스 노트와 비교하세요. Apple SDK 버전에 따라 시작 옵션이 바뀔 수 있습니다.
5. 다시 빌드하고 확인
flutter clean
flutter run디버그 콘솔의 Sophonz Flutter SDK Version:에 새 버전이 나오고 이어서 Sophonz Flutter SDK attached to host SDK successfully.가 보여야 합니다. 그다음 두 플랫폼의 세션이 Sophonz에 도착하는지 확인하세요. iOS는 먼저 앱을 백그라운드로 보냅니다.
고정과 되돌리기
- 되돌리려면 모든
ref를 이전 태그로 바꾸고 2단계를 다시 실행하며, 네이티브 버전도 그 태그에 맞춥니다. ref에는 커밋 SHA도 쓸 수 있습니다. 배포하는 빌드에는 태그를 쓰세요. 브랜치 이름은 계속 움직이므로 무엇으로 빌드했는지 남는 기록이pubspec.lock뿐입니다.pubspec.lock은 커밋해 두세요. 없으면 다른 머신의flutter pub get이 태그를 다시 해석하며, 태그가 옮겨지지 않은 경우에만 같은 커밋을 얻습니다.