업그레이드

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용 SophonzIOsophonz_ios/ios/sophonz_ios.podspec
Swift Package Manager용 sophonz-apple-sdksophonz_ios/ios/sophonz_ios/Package.swift

단계

1. 모든 태그 바꾸기

pubspec.yaml의 모든 ref는 dependencies와 dependency_overrides를 가리지 않고 같은 태그여야 합니다. 태그가 섞이면 해석에 실패하거나, 오버라이드가 항상 이기기 때문에 서로 다른 릴리스의 패키지가 조용히 섞입니다.

pubspec.yaml
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 플러그인을 같은 버전으로 올립니다.

android/settings.gradle.kts
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를 갱신합니다.

ios/Podfile
pod 'SophonzIO', :git => 'https://github.com/sophonz-labs/sophonz-apple-sdk.git', :tag => 'v1.1.0'
cd ios && pod update SophonzIO

Swift 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이 태그를 다시 해석하며, 태그가 옮겨지지 않은 경우에만 같은 커밋을 얻습니다.

다음 단계

  • 설치 — 이 단계들이 바꾸는 전체 설정
  • 릴리스 빌드 — 새 빌드의 매핑과 dSYM 업로드