이제 컴파일도 되겠다
직접만든 플러터화면과 네이티브 화면의 네비게이션도 되었으니,, ShoreBird를 적용해보려 한다.
Flutter 애플리케이션을 위한 코드 푸시(Code Push) 솔루션으로, 앱 스토어를 거치지 않고도 Dart 코드 변경 사항을 사용자 기기에 즉시 배포할 수 있도록 지원해주는 서비스이다.
앱 업데이트 없이 수정사항이 반영되므로 잦은 업데이트에 민감한 앱들에는 최고의 서비스인듯 하다.
즉각적인 업데이트: 앱을 다시 빌드하거나 스토어에 제출하지 않고도 Dart 코드 변경 사항을 사용자에게 바로 배포할 수 있다.
패치 기반 배포: 기존 릴리스 버전에 대한 변경 사항만을 포함한 패치를 생성하여, 앱을 재배포하지 않고도 업데이트할 수 있다.
롤백 기능: 문제가 있는 패치를 손쉽게 이전 안정적인 버전으로 되돌릴 수 있다.
앱 스토어 정책 준수: Shorebird는 Apple과 Google의 앱 스토어 정책을 준수하도록 설계되어, 앱의 안정성과 보안을 유지해준다.
ShoreBird를 본격적으로 적용하기전에, 릴리즈 빌드가 되어야 하므로 키스토어 생성 및 릴리즈 빌드가 되도록 세팅이 되어있어야 합니다.
curl --proto '=https' --tlsv1.2 https://raw.githubusercontent.com/shorebirdtech/install/main/install.sh -sSf | bash
shorebird login
// 대시보드에 앱 생성
shorebird init
이 과정에서 shorebird.yaml
파일이 생성되며, 앱의 고유한 app_id
가 부여된다. 또한, Android의 경우 AndroidManifest.xml
에 인터넷 권한이 추가된다.
// shorebird에 릴리즈 배포 및 apk 생성
// shorebird는 릴리즈 모드에서만 작동이 된다.
shorebird release android --artifact apk --flavor (flavor이름) -- --release
cd build/app/outputs/apk/릴리즈 빌드한 flavor 이름/release
//adb를 통해서 설치
adb install app-release.apk
혹시라도 빌드 과정에서, apk를 찾지 못하는 에러가 발생할경우 아래 코드 추가.
applicationVariants.all { variant ->
if (variant.buildType.name == "release" && variant.flavorName == "릴리즈 빌드할 flavor 이름") {
variant.outputs.all { output ->
// 원하는 파일명으로 덮어쓰기
output.outputFileName = "app-release.apk"
}
}
}
패치 테스트를 위해 특정 텍스트의 색상을 바꿨다. 혹은 알아보기 쉬운 정도로만 코드를 수정해도된다.
로컬에서 코드 수정후, 아래 명령어를 실행한다.
shorebird patch android --flavor (flavor이름)
약 30초 정도 후에, 이전에 단말기에 설치한 앱에서 자동으로 수정사항이 반영된것을 확인할 수 있다!