Flutter/ShoreBird

Flutter ) CodePush(ShoreBird) 개요

EEYatHo 2025. 4. 14. 16:22
반응형

문서 링크

 

코드푸시 동작 방식

  1. Shorebird로 빌드된 앱에는 수정된 Flutter 엔진이 포함 (즉, 배포시 shorebird 명령어로 빌드해야함)
  2. 앱 시작 시 앱의 Dart 코드에 대한 업데이트를 확인
  3. 업데이트가 있으면 엔진이 업데이트를 다운로드
  4. 사용자는 업데이트가 다운로드된 후 앱을 다시 시작할 때 업데이트를 볼 수 있음

 

일반적인 코드 푸시 워크플로

  1. (사전작업) Shorebird CLI를 사용하여 앱의 새로운 릴리스를 빌드
  2. shorebird release android // ios
  3. (사전작업) App Store나 Google Play를 통해 해당 릴리스를 배포
  4. Code Push가 필요해져서 앱의 Dart 코드를 변경
    1. UI뿐 아니라, 새로운 기능, 버그 수정, 업데이트 된 Dart 종속성도 포함
  5. Shorebird CLI를 사용하여 첫 번째 단계에서 만든 릴리스에 대한 새 패치 업로드
  6. shorebird patch android // ios
  7. 사용자는 다음에 앱을 다시 시작할 때 업데이트를 볼 수 있음

* 커스텀 배포 가이드

 

패치란 (링크)

사용자가 새 버전을 다운로드/업데이트 할 필요없이 앱 코드를 업데이트하는 프로세스

 

패치에 어떤 변경 사항이 포함될 수 있는가? (링크)

모든 Dart 코드들

  • 앱 코드
  • 생성된 코드
  • pubspec.yaml (네이티브 코드 변경 사항을 포함하지 않는 경우만)

다음은 포함되지 않음

  • 이미지, 글꼴 등 asset 파일. 가까운 미래에 지원할 계획(참조)
  • 네이티브 코드(예: Android의 Java/Kotlin 또는 iOS의 Objective-C/Swift)
  • 플러터 엔진 (코드 푸시를 사용하여 앱의 플러터 버전을 변경할 수 없습니다)

 

앱, 릴리즈, 패치, 아티팩트간의 용어 해석

애플리케이션

flutter create [app_name]명령어를 통해 생성되어, 스토어에서 id값을 부여받은 프로젝트를 뜻함

앱은 shorebird init시 부여받은 app_id가 있으며, shorebird.yaml에서 볼 수 있음

앱에는 0개 이상의 릴리즈가 존재

 

릴리즈

버전과 빌드 번호로 식별되는 특정 버전의 앱 (ex. 1.0.0+1)

릴리즈를 통해 만든 결과물을 스토어에 등록 후 스토어 밖에서 코드 푸시 가능

릴리즈에는 0개 이상의 패치가 존재

 

패치

특정 릴리즈에 대한 변경 사항

OTA 업데이트로 적용

버그 수정, 새로운 기능 등

릴리즈에 여러 패치를 등록할 수 있지만, 하나의 패치만 활성화할 수 있음

릴리즈 버전과 패치 번호로 식별 (패치 번호는 자동 증가하는 정수)

유저가 앱 실행시, 사용 가능한 패치를 확인하고 백그라운드에서 최신 패치를 적용

이 패치는 다음 앱 시작시 표시됨

 

아티팩트

빌드 및 패치 작업의 출력

예시)

  • 릴리즈 아티팩트: shorebird release android를 통해 만들어진 여러 아키텍처별 libapp.so 파일과 Android 아카이브(.aab) 파일들
  • 패치 아티팩트: shorebird patch android 를 통해 만들어진 Dart 코드 차이점을 포착하는 diff 파일 등