Flutter/ShoreBird
Flutter ) CodePush(ShoreBird) 개요
EEYatHo
2025. 4. 14. 16:22
반응형
문서 링크
코드푸시 동작 방식
- Shorebird로 빌드된 앱에는 수정된 Flutter 엔진이 포함 (즉, 배포시 shorebird 명령어로 빌드해야함)
- 앱 시작 시 앱의 Dart 코드에 대한 업데이트를 확인
- 업데이트가 있으면 엔진이 업데이트를 다운로드
- 사용자는 업데이트가 다운로드된 후 앱을 다시 시작할 때 업데이트를 볼 수 있음
일반적인 코드 푸시 워크플로
- (사전작업) Shorebird CLI를 사용하여 앱의 새로운 릴리스를 빌드
- shorebird release android // ios
- (사전작업) App Store나 Google Play를 통해 해당 릴리스를 배포
- Code Push가 필요해져서 앱의 Dart 코드를 변경
- UI뿐 아니라, 새로운 기능, 버그 수정, 업데이트 된 Dart 종속성도 포함
- Shorebird CLI를 사용하여 첫 번째 단계에서 만든 릴리스에 대한 새 패치 업로드
- shorebird patch android // ios
- 사용자는 다음에 앱을 다시 시작할 때 업데이트를 볼 수 있음
패치란 (링크)
사용자가 새 버전을 다운로드/업데이트 할 필요없이 앱 코드를 업데이트하는 프로세스
패치에 어떤 변경 사항이 포함될 수 있는가? (링크)
모든 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 파일 등