일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- IOS
- shorebird
- PG결제
- FocusNode
- fastlane
- 갤럭시폴드
- DevTools
- 무선빌드
- reactivex
- abstact
- FLUTTER
- SHIMMER
- delegate
- BloC
- 성능 개선
- error
- Codemagic
- copy on write
- MVVM
- appstore
- Codepush
- Equatable
- reject
- Xcode
- TextInputFormatter
- flutter web
- Android
- struct
- Swift
- GetX
- Today
- Total
뚝딱뚝딱 모바일
[Flutter] Fastlane으로 배포 자동화를 해보자 (1) 본문
안녕하세요...!
오늘은 Fastlane을 알아보겠습니다.
Fastlane은 Android, iOS의 자동적인 스토어 업로드를 쉽게 지원해 주는 툴입니다.
Flutter는 Google Play Console과 App Store Connect 두 곳 모두 올려야 하기에, 매번 업데이트할 때마다 불편함(귀찮음)을 느껴, 이번 기회에 찾아보고 적용하게 되었습니다.
대부분의 내용은 fastlane docs를 기초로 하고, 제가 설치하면서 겪은 내용들을 토대로 작성하였습니다. 약간씩의 다른 점이 존재할 수 있습니다...!
Fastlane 설치
먼저 설치부터 해보겠습니다. 먼저 Fastlane은 Ruby 2.5 이상의 버전에서 지원한다 하니, Ruby version부터 확인해 봅시다.
$ ruby --version
설치에는 여러 방법이 있습니다. Bundler, Homebrew, System Ruby + RubyGems 각각 활용하는 방법이 있는데, System Ruby는 권장하지 않는다고 합니다. 전 Homebrew를 통해 설치하였습니다.
brew install fastlane
Android 적용
먼저, Android부터 적용해보겠습니다. [가이드 문서]
Flutter project 내부의 android 폴더로 이동해서 init 해주겠습니다.
fastlane init
잠시 기다리면, package name을 묻기에, 알맞은 package name을 적어줍니다.
다음 질문으로 json secret file의 경로를 입력하라고 합니다.
대뜸 없이 뭔 json secret file? 인가 싶지만, 주체가 누구인지 확인도 없이 업로드시켜줄 순 없으니, 확인할 수 있는 키를 달라는 겁니다.
Json Secret Key 만들기
먼저 현재 스토어에 올라온 프로젝트에 Google Developer API를 연동해주어야 합니다.
https://console.developers.google.com/apis/api/androidpublisher.googleapis.com/?hl=ko
위 링크로 접속하여 연동해줍시다. 만약 Google Cloud Project가 없다면, 만든 후 해주시면 됩니다.
https://console.cloud.google.com/iam-admin/serviceaccounts?hl=ko
이번엔 이 링크로 들어가서 서비스 계정을 만들어줍니다.
알맞은 이름을 적고 ID를 부여해 줍니다. 그럼 그걸 기반으로 한 email이 생깁니다. 복사해 주고, 계정을 만들어 줍니다.
서비스 계정 탭으로 돌아오면, 방금 만든 계정이 보일 겁니다. 이 계정을 클릭해서 들어가서, 키 탭으로 이동해 줍니다.
키 추가 버튼을 눌러 새 키 만들기를 눌러 줍니다. JSON과 P12 중 하나 고르라 하는데, JSON을 선택하여 만들고 다운로드하여줍니다.
그리고 위에서 복사한 계정을 Google Play Console로 이동하여, 사용자 및 권한 탭에서 신규 사용자 초대를 해줍니다.
권한 같은 경우에는, Fastlane Docs에서는 Admin (모든 권한)을 추천한다 합니다. 만약 권한을 좀 민감하게 다뤄야 할 것 같다 하시면, 출시 관련 권한만 허용하여 주셔도 됩니다.
이제 이렇게 되면 드디어 Secret Json File을 만들었습니다...! 안전한 곳에 보관해 두고, 그 경로를 터미널에 입력해 줍니다.
터미널이 오류 없이 완료되었다고 뜨면, 만든 Secret Json File과 잘 연결되었다는 뜻입니다.
앱을 Play Store에 올릴 때는, 이미지, 스크린샷, 배너 등등 또 같이 올리기에 이에 대한 정보를 가져와줍시다.
fastlane supply init
이것들을 가져왔다면, 이제 스토어에 올려야 하니, fastfile의 lane을 수정해 올려봅시다.
(이 부분은 지극히 개인적인 내용이고, 본인 입맛에 맞게 작성하시면 됩니다. Docs에 잘 정리되어 있으니, 참고하시면 됩니다.)
default_platform(:android)
platform :android do
desc "Deploy a new version to the Google Play"
lane :deploy do
sh "flutter build appbundle"
upload_to_play_store(
aab: "../build/app/outputs/bundle/release/app-release.aab",
)
end
end
저는 pubspec.yaml을 기준으로 버전 처리를 할 예정이기에, 먼저 flutter build appbundle을 실행시켜 주었습니다. 그 후 만들어진 앱 번들을 upload_to_play_store 함수에 태워 업로드하였습니다.
이제 Fastfile 파일을 저장하고 fastlane deploy를 터미널에 실행시켜 주면....
성공적으로 업로드하였습니다! Google Play Console에서도 업로드된 걸 확인할 수 있습니다.
'Flutter 지식' 카테고리의 다른 글
[Flutter] 앱 성능 측정을 해보자 (1) | 2023.11.14 |
---|---|
[Flutter] Fastlane으로 배포 자동화를 해보자 (2) (0) | 2023.11.10 |
[Flutter] Bloc에 대해 알아보자 (0) | 2023.10.31 |
[Flutter] GetX에 대해 조금만 알아보자 (0) | 2023.10.30 |
[Flutter] Shimmer 라이브러리에 대해 알아보자 (0) | 2023.10.25 |