[iMessageSticker/튜토리얼] Xcode 빌드실패 Provisioning 설정이 꼬였을 때 해결법

iMessageSticker를 등록하고자 하는 사람 중에는 개발은 전혀 해 본적 없는 디자이너나 일러스트레이터인 경우가 많다. 이런 사람들이 갑자기 Xcode니 빌드 타겟, provisioning, 그리고 certificate과 같은 생소한 단어들에 놀라서 간단한 에러도 잘 해결 못하는 경우가 많은 것 같다. iMessageSticker를 등록하면서 발생 할 수 있는 다양한 에러와 해결방법을 알아보도록 하자. 이 해결법은 iMessageSticker project 뿐만 아니라 보통의 개발 프로젝트에도 모두 해당 될 수 있는 내용들이다. (기본적으로는 일반 앱과 iMessage Sticker는 같은 구조를 가진다)

Automatic Code sign

Xcode에서 iMessageSticker를 업로드할 때 특별한 이유가 없다면 Xcode가 자동으로 signing을 하도록 두면 된다. Xcode 8 에서부터 Automatic code signing을 지원하기 시작했는데 그 이전에는 AppleDeveloper 사이트에서 Manual하게 Certificate과 Provisioning을 생성하고 다운받아야만 했다. 이 과정이 굉장히 번거롭고 헷갈리고, 초보 개발자들이 많이 헤매는 부분인데 Xcode가 AutoSigning을 지원해주고 나서 한결 쉬워졌다.

Automatic code sign을 설정하는 방법은 너무나도 간단하다. Project > Signing 에서 Automatically manage signing 을 체크 하면 된다. 이렇게 해 두면 귀찮고 번거롭게 developer.apple.com 에 들어갈 필요가 없다. 심지어 Device 추가도 자동으로 해 준다!

Provisioning 설정이 꼬였을 때

사실 위와 같이 설정하고 자동으로 잘 되면 아무 걱정이 없는데, 가끔 provisioning 오류에 의해서 빌드나 archive에 실패할 때가 있다. 이럴 때 몇가지 해결방법을 알아보자.

Account 가 잘 등록되어 있는지 확인

일단 나의 애플 개발자 계정이 Xcode에 잘 등록되어 있는지 확인한다. 등록된 계정은 Xcode > Preference > Account 에서 확인 할 수 있다. 한가지 주의할 점은 Automatic Signing을 하려고 한다면 아래쪽 Download Manual Profile을 클릭하면 안 된다는 것이다. 이걸 클릭해서 많이 설정이 꼬이게 된다.

Provisioning profile 전부 삭제하기

이미 꼬여버린 Provisioning은 한 번 클리어 해 주면 된다.
터미널을 켜서 아래 경로로 이동한다. (그냥 Finder에서 찾아가도 됨)

$ cd /Users/jooeunjin/Library/MobileDevice/Provisioning Profiles/ 
$ open .


Provisioning Profiles 안에 있는 .mobileprovision 파일들을 전부 삭제하고 다시 빌드 도전!

Archive / Build 가 안돼요

빌드가 안되는 경우도 다양한 이유가 있지만, 몇가지 Xcode 입문자들이 쉽게 하는 실수를 알아보자.

빌드타겟 설정

빌드가 안 되는 이유로는 잘못된 타겟을 설정한 경우가 많다. 일반적으로 디바이스나 시뮬레이터에서 빌드 하려면 정확하게 선택을 해 줘야 하고 , 업로드를 위해서 archive 하는 경우에는 디바이스나 시뮬레이터가 아닌 Generic iOS Device로 해주어야 한다. 이렇게 하지 않으면 Product > Archive 가 비활성화 되는 경우가 있다.

Extension / App 의 설정 통일

iMessageSticker 앱 같은 경우는 App과 Extension이 따로 존재한다. 이 각각에 대해서 version 과 build version을 통일 해 주어야 한다. 이 두개가 맞지 않으면 빌드 에러는 발생하지 않지만 나중에 업로드 할 때 에러가 발생한다.
그리고 반대로 Bundle Identifier 는 꼭 다르게 해 주어야 한다. 보통 Extension쪽에 .StickerPackExtension이라고 더 붙어주는 것이 convention이다.
그 외에 아래쪽에 있는 Signing 과 Deployment Info도 맞춰준다.

그 외 이상한 버그

프로비저닝 외에 다양한 빌드 에러가 생길 수 있다. 이때 차례차례 해 볼 수 있는 방법은 다음과 같다.

Xcode 클린빌드

프로젝트를 빌드하는 과정에서 중간 단계 파일이나 전처리용 파일등이 잔뜩 생기게 되는데 command + shift + k 를 눌러서 Clean build를 할 수 있다.
다만 어떤 이유에서인지 위 명령어에 의해서도 잘 지워지지 않는 파일이 있고, 이 파일들은 derived data 라는 폴더에 남아있게 되는데 이걸 지우고 나면 문제가 해결되는 경우가 있다.

Derived Data 폴더는 아래 경로로 접근할 수 있다.

$ cd /Users/jooeunjin/Library/Developer/Xcode/DerivedData
$ open .

재부팅

뭔가 잘 안되면 Xcode를 재부팅 하거나 Xcode 재부팅으로도 해결되지 않으면 컴퓨터를 재부팅 하면 해결되는 경우도 종종 있다.