1️⃣ 개요
Fastlane이란? iOS 앱 배포 단순화를 목표로 하는 오픈 소스 플랫폼입니다.
Fastlane은 여러가지 기능들을 제공하고, 해당 기능들을 활용하여 배포작업(TestFlight에 앱을 업로드하는 작업)시간을 단축시키거나 간단하게 처리할 수 있습니다.
Fastlane의 기본동작 원리는 lane이라는 워크플로를 작성한 후 실행하는 방식입니다.
Fastlane - Plugin 기능 설명
Fastlane을 설치하면 기본적인 Action이 제공되지만, 좀 더 다양한 작업을 위해 🔗 Plugin기능을 활용할 수 있습니다.
서로 다른 fastlane 사용자들이 plugin기능을 통해 공유할 수 있습니다.
해당 블로그는 fastlane 설치가 완료되었다는 과정하에 작업을 진행합니다.
만약 설치가 되어있지 않다면 🔗 앱 배포 자동화: Slack 명령어로 TestFlight 업로드 (Flask, Bitbucket Pipelines, Fastlane 활용)글에서 fastlane설치내용을 참고할 수 있습니다.
여러 Plugin 중 앱아이콘에 Badge를 표시하여 BuildConfiguration별로 구분할 수 있도록 도와주는 Plugin을 적용합니다.
참고 이미지
2️⃣ 적용하기
가장 먼저 badge라는 fastlane plugin을 설치합니다.
Imagemagick이 설치되어 있지않다면 자동으로 함께 설치됩니다.
$ fastlane add_plugin badge
FastFile 작성
설치한 plugin을 동작하기 위해 FastFile에 badge를 추가하는 Action을 작성합니다.
기본명령어는 add_badge 이고, 옵션에 따라 여러가지 뱃지모양을 표시할 수 있습니다.
- add_badge
- 기본 badge만 표시
- add_badge(dark: true, grayscale: true)
- dark가 true인 경우 뱃지가 검은색으로 표시됩니다.
- grayscale이 true인 경우 앱아이콘이 회색으로 표시됩니다.
- add_badge(shield: "Version-0.0.3-blue", no_badge: true)
- shield에 버전을 입력하면 앱아이콘에 버전을 표시할 수 있습니다.
- no_badge이 true인 경우 badge표시를 하지 않습니다.
찾아보시면 위의 옵션이외에도 여러가지 옵션이 있습니다. 해당 옵션들을 사용하여 다양한 앱아이콘을 제작할 수 있습니다.
- dark, alpha, alpha_channel, custom, no_badge, badge_gravity, shield, shield_parameters, shield_io_timeout, shield_geometry, shield_gravity, shield_scale, shield_no_resize, glob, grayscale
버전명과 badge표시하는 예시코드 - FastFile
default_platform(:ios)
platform :ios do
desc "앱아이콘 뱃지 표시"
lane :customAppIcon do
version = get_version_number(xcodeproj: "GeekReport.xcodeproj")
build_number = get_build_number(xcodeproj: "GeekReport.xcodeproj")
add_badge(shield: "Version-#{version}(#{build_number})-blue", no_badge: false)
end
end
3️⃣ 주의사항
새로 작성한 customAppIcon레인을 실행하면 Assets폴더의 AppIcon이미지들이 모두 변경되어서 적용됩니다.
만약 그대로 commit을 하면, Release로 배포할 때 뱃지가 표시된 이미지가 배포될 수 있습니다.
fastlane에는 모든 lane을 실행하기 전, 후 동작을 정의할 수 있는 action을 제공합니다.
해당 action들을 활용하여 lane을 실행하기전 변경사항을 모두 commit을 했는지 확인합니다. 또한 lane이 실행한 후에 AppIcon변경사항은 모두 원상복구를 하도록 하여 이슈가 발생하지 않도록 방어할 수 있습니다.
앱아이콘 변경사항 원복코드 - FastFile
default_platform(:ios)
platform :ios do
...
before_all do
ensure_git_status_clean
end
after_all do |lane|
sh("git checkout -- ../{프로젝트경로}/Resources/Assets.xcassets/..")
end
end
🔗 참고링크
'iOS > 3rd Party Library' 카테고리의 다른 글
[iOS] CocoaPods - 라이브러리 생성 및 배포하기 (4) | 2024.07.23 |
---|---|
[iOS] CocoaPods - 명령어 및 에러 정리 (1) | 2024.07.23 |
[iOS] CocoaPods - 기본설명 (1) | 2024.07.23 |
[iOS] FSCalendar 라이브러리 (1) | 2024.05.27 |
[iOS] Atributika 라이브러리 (HTML to NSAttributedString) (0) | 2024.03.20 |