Fastlane ios techtalk header

FastLane Snapshot으로 배포용 스크린샷 자동으로 만들기 - iOS Tech Talk

fastlane 소개

iOS 앱 배포를 위해 스크린샷을 자동으로 찍어주는 fastlane의 snapshot을 설명해 드리겠습니다. 밤새 버그를 잡아서 배포본을 완성한 후 빨리 앱을 출시하려고 iTunes Connect에 접속하면 스크린샷을 올리라는 단계에 맞닥뜨립니다. 앱이 영어와 한글만 지원하는 상황이라고 가정하면 얼마나 많은 스크린샷이 필요할까요?

fastlane-screenshot1

그나마 최근에는 미디어 관리 덕분에 필요한 스크린샷 개수가 크게 줄었습니다.

fastlane-screenshot2

하지만 여전히 스크린샷을 찍는 것은 번거롭고 시간이 많이 소요됩니다. 게다가 한 번 올려서 끝나는 것이 아니라, UI가 바뀌거나 새로운 기능이 들어가서 홍보하려면 기존 스크린샷을 대체하는 새 스크린샷을 찍는 작업을 반복해야 하죠.

이런 개발 뉴스를 더 만나보세요

이런 괴로움을 덜어주기 위해 2009년 Provisioning Profile이나 스크린샷 등의 다양한 문제를 해결하기 위해 fastlane이라는 오픈소스가 나왔습니다.

fastlane-tools

fastlane에는 인증서를 관리하는 cert, 앱을 빌드하는 gym, iTunes Conenct에 메타 데이터를 업로드해주는 deliver 등 10개 이상의 도구들이 있습니다. 이 중 snapshot을 자세히 살펴보겠습니다.

설치

fastlane-install

fastlane을 설치하기 전에는 먼저 Xcode command line 툴을 설치해야 합니다. 그런 다음 fastlane을 설치합니다. 위 명령어를 참조하세요.

snapshot을 설치하려면 fastlane snapshot init 이라는 명령어를 사용합니다. 설치가 끝난 후 프로젝트 폴더를 확인하면 iOS 앱 프로젝트와 함께 Snapfile이라는 설정 파일과, 스냅샷을 찍기 위한 2.3 버전, 3.x 버전의 swift 파일이 두 개 생성됩니다.

fastlane-snapfile

Snapshot의 설정 파일에 기기, 언어 등 최소한의 설정을 할 수 있습니다. 기기의 경우 Xcode에서 command-shit-2에서 보이는 이름을 사용하면 되며, 언어의 경우 Apple의 l18n 가이드를 참고하세요.

코드

fastlane-code fastlane-code2

이제 실제 스크린샷을 찍는 코드를 만들겠습니다. fastlane은 내부적으로 Xcode의 UI Testing 툴을 사용합니다. 프로젝트에서 새로운 타깃을 생성한 다음, UI Testing Bundle을 만들어줍니다. 그런 다음 자동 생성된 SnapshotHelper.Swift 파일을 UI Test 타깃에 추가합니다.

fastlane-code3

setUp() 메서드에 setupSnapshot() 함수를 설정하고, testSnapshot() 메서드에서 스크린샷을 찍는 snapshot()이라는 함수를 원하는 시기에 불러줍니다. 이 내용은 처음 설치할 때 터미널에 안내되기 때문에 추구에 참고할 수 있습니다.

여기까지 만들었다면 터미널에서 fastlane snapshot이라는 명령어를 실행합니다.

완성 결과

fastlane-result

터미널에서 명령어를 실행하면 프로젝트마다 걸리는 시간은 다르지만 자동으로 각 시뮬레이터에서 앱이 실행되면서 자동으로 스크린샷이 찍히게 되며, 완성되면 html 형태로 스크린샷을 보여줍니다. 전체 이미지 파일은 프로젝트 폴더 안에 언어별로 저장됩니다.

fastlane-frameit

이렇게 만든 스크린샷은 frameit을 이용해서 홈페이지에 사용할 이미지 리소스를 만들거나, App Store에서 활용할 수 있는 문구가 포함된 스크린샷을 만들 수 있습니다.

그런 다음 deliver를 사용해서 브라우저를 열지 않고도 iTunes Connect에 스크린샷을 올리거나 전체 배포 과정도 자동화할 수 있습니다.

함께 활용하면 좋은 팁

fastlane-others

Simulator Status Magic이라는 오픈소스 라이브러리를 사용하면 상태바와 배터리, 캐리어 표시를 설정해서 스크린샷을 깔끔하게 설정할 수 있습니다.

fastlane-others2 fastlane-others3

또한 iPhone일 때는 세로로, iPad는 가로로 돌려서 스크린샷을 찍는다던가, 스냅샷이 실행될 때만 특정 이미지를 지정해서 띄워서 스크린샷을 예쁘게 관리할 수도 있습니다.

마치며

fastlane-contact

fastlane 홈페이지에서 자세한 내용을 보실 수 있으며, 2017년 4월 1일에 있을 let us: Go!에서도 관련 발표를 할 예정입니다. 질문 사항을 개인 연락처로 주시는 것도 환영입니다.


이 글은 Realm과 OSXDev가 공동주최한 iOS Tech Talk의 강연을 요약한 것입니다. 전체 발표 슬라이드는 링크에서 확인하세요.

다음: Realm Obj-C와 Realm Swift의 새로운 기능을 소개합니다.

General link arrow white

컨텐츠에 대하여

이 컨텐츠는 저자의 허가 하에 이곳에서 공유합니다.

구범모

2012년부터 iOS 개발을 시작한 iOS 개발자입니다. 취미로 사진을 시작하면서 사진 장비 덕질과 애플 장비 덕질을 동시에 하게돼 통장이 매우 곤란해하고 있습니다. 집에서 거북이 두 마리를 키웁니다. 🐢🐢

4 design patterns for a RESTless mobile integration »

close