반응형
LinkedIn 개발자로 성장하면서 남긴 발자취들을 확인하실 수 있습니다.
Github WWDC Student Challenge 및 Cherish, Tiramisul 등 개발한 앱들의 코드를 확인하실 수 있습니다.
개인 앱 : Cherish 내 마음을 들여다보는 시간, 체리시는 디자이너와 PM과 함께 진행 중인 1인 개발 프로젝트입니다.
10년 후, 20년 후 나는 어떤 스토리 텔러가 되어 있을지 궁금하다. 내가 만약에 아직 조금 더 탐구하고 싶은 게 있고, 궁금한 게 있다면, 그게 설사 지금 당장의 내 인생에 도움이 안 되는 것 같더라도 경험해보자. 그 경험들을 온전히 즐기며 내 것으로 만들고, 내 일에 녹여내고... 그러다보면 그 점들이 모여 나란 사람을 그려내는 선이 될 테니까.

Recent Posts
Recent Comments
Total
관리 메뉴

꿈꾸는리버리

협업할 때 Certificate & Provisioning Profiles (개념 + 실습) 본문

오뚝이 개발자/iOS

협업할 때 Certificate & Provisioning Profiles (개념 + 실습)

rriver2 2022. 8. 26. 21:22
반응형

두둔 ! 팀 내에서 작업할 때.. 문제가 생겼던 내용..
처음에는 뭐가 문제인지도 모르겠었지만... 이제는 어느 정도 이해를 하게 되어 잊기 전에 블로그 포스팅을 하려 한다.

 

🌷 우선은 How? 보다는 What?에 대해서 알아보자


개인이든 팀이든 애플 기기(디바이스)에 앱을 실행시키기 위해서는 인증서와 프로비저닝 프로파일이 필요하다.

Certificates 개념

  • 애플이 개발자를 신뢰할 수 있는 보증서
  • 애플의 하드웨어에서 특정 소프트웨어가 동작하는데, 애플의 허가가 필요
  • 이 허가는 개발자가 certificates를 생성하고 실행하여 xcode에 설치하면, 애플의 신뢰 대상이 되어 개발한 소프트웨어를 실행 할 수 있음

: 애플만이 자신들의 기계(하드웨어)에 소프트웨어(앱, 프로그램 등)이 동작하도록 허락함
Certificate은 Development(개발)와 Distribution(배포)용으로 나뉨

Device 개념

  • 테스트 해볼 Device를 등록하는 것
  • Device 등록은 최대 100대 까지이며, 1년에 1번(계정 계약 새로 만들 때)만 삭제가 가능하므로 신중한 등록이 필요

Provisioning Profiles 개념

  • Provisioning Profiles은 디바이스가 개발자의 앱을 신뢰한다는 설정 파일
  • Provisioning Profile에는 누가(Certificate), 무엇을(Identifier), 어디에(Device)에 배포할 것인지에 대한 정보가 담겨있다.

: 프로비저닝 프로파일은 app id, certificate, device정보, app group 등이 들어가 있어서 iOS기기 애플 인증서를 연결 해주는 역할을 함

  1. App ID : 앱 스토어에 등록될 Bundle ID (애플에서 앱을 구분하는 구분자)
  2. Certificate : 위에서 설명한 인증서
  3. Device : 디바이스의 UDID


정리를 하면, "애플"이 "개발자"를 신뢰하는 건 Certificate가 담당하고, provisioning profiles는 각 "디바이스"가 "개발자"를 신뢰할 수 있는 지에 대한 내용이다.


처음 ios를 개발할 때 내 폰에서 내가 만든 앱을 실행시킬 수 있다고 ?? 하면서 시도했을 때 했던게 사실은 Certificate & Provisioning Profiles가 해당이 된다. 좌측 하단에 개발자의 계정을 넣는 게 Certificate를 발급했던 내용이고, 디바이스에서 우측 하단과 같은 alert을 보고 설정에 가서 해당 개발자를 신뢰한다고 했던 게 Provisioning Profiles을 설정했던 내용이다.

 


이렇게 개인에서는 귀찮지만, 그래도 나름 할 만했던 작업이 팀을 통해서 Certificate & Provisioning Profiles을 인증하는 과정은 꽤나 오래 걸렸다. 그리고 누군가에게 조금이나마 도움이 되길 바라면서, 이렇게 블로그를 포스팅한다.

삽질을 하면서 이해했던 내용들에 대해 작성을 하는 내용이기 때문에 해당 포스팅을 500% 신뢰를 하지는 않길 바라면서.. 혹여나 틀린 내용이나, 좀 더 나은 설명이 있다면 언제나.. 댓글로 말씀을 부탁드립니다 !!!

"애플"이 "개발자"를 신뢰하는 건 Certificate가 담당하고, provisioning profiles는 각 "디바이스"가 "개발자"를 신뢰할 수 있는 지에 대한 내용이다. 를 되새기며...
우선은 팀으로 생각을 하면 애플이 신뢰하는 앱의 개발자가 있어야 한다. 그리고 이 개발자는 팀원 중에 한 명 즉, 앱을 출시하는 사람/ 앱을 만든 사람(지금부터 이 사람을 "리버"라고 하겠슘..)이 되게 된다. 그러면 리버의 인증서를 팀원들 모두가 가지고 있어야지 애플에서는 아! 지금 작업중인 이 앱은 애플의 신뢰를 얻어서 개발하고 있구나 ~ 라고 할 수 있게 된다. 따라서 우선은 certificates가 필요하다. 그 다음으로는 지금 실행시키고자 하는 기기에서 해당 개발자를 신뢰를 해야 한다. 그렇기 때문에 provisioning profiles이 필요하다.
그리고 이 certificates와 provisioning profiles을 팀원들에게 공유를 해주면 팀원들이 해당 파일들을 통해 실기기로 개발을 할 수 있게 된다.

🌷 이제는 What? 보다는 How?에 대해서 알아보자

 

리버가 해야 하는 일 (앱을 출시하는 사람/ 앱을 만든 사람)

1. 해당 프로젝트에 팀원들 초대

appConnection 에서 사용자 엑세스 클릭

좌측 상단의 + 를 눌러 팀원들 초대하기

이렇게 초대를 하면, 팀원의 이메일에 초대 승락을 위한 이메일이 간다.

2. Apple Developer 사이트에 App 등록

Identifiers에 App 등록하기

 

2. 팀원들 디바이스 추가하기

Device에 팀원에게 UDID를 받아서 등록한다.
+) 호옥시 provisioning profile을 발급한 이후에 추가된 device가 있다면, 팀원 전체가 다시 provisioning profile을 받을 필요는 없다. xcode를 돌리는 사람은 그 사람의 device만 들어가 있으면 되는 것 같다.

 

3. certificates(Publc key) 발급 받기

앞서 언급한 대로 우선은 certificates가 필요하다. 근데 개인의 앱이 아니고 모두가 사용해야 하기 때문에 Publc key로 해야 한다.
리버는 자신의 맥북 keyChain에서 team의 앱에 사용하고자 하는 Certificate를 내보내기 한다.


그러면 이렇게 파일 포맷이 .p12라는 인증서를 추출해낼 수 있다. 참고로 이때 설정해둔 암호는 이후 팀원들에게 제공할 때 알려줘야 한다.

이렇게 추출을 하고 나면 이런 인증서를 발급받을 수 있다 :)

 

4. provisioning profiles 발급 받기

우선, 내용 설명에 앞서 이번 프로젝트에서는 이렇게 .. app과 widget, 그리고 watch가 있기 때문에 여러 provisioning profiles을 받아야했었다.


그리고 위에서 보여준 provisioning Profile의 그림을 참고하면 각각의 provisioning Profile은 App ID, Certificates, Device 이렇게 3가지의 내용이 들어가 있어야 한다.


그리고 만약에 나처럼 Widget과 App 사이에서 데이터를 공유하는 App Group이 있다면, provisioning profile을 만들기 전에... 앱 내에서 사용하는 app group을 먼저 선택해줘야 한다 !

+ ) app의 identifier에 app group 넣기

나는 앱과 widget에서 app group을 공유했기 때문에 2개의 identifier에 app group을 선택해줘야 했다.
여기서 app group을 추가해야 하는 identifier를 선택한다.

다음 페이지에서 Capabilities에 App groups을 선택한다.

그리고 공유하고자 하는 App groups을 선택한다.

 

자 이제 provisioning Profile은 어떻게 발급을 받냐..

developer.apple 사이트에 들어가서 profile의 파란색 + 버튼을 눌러 provisioning Profile을 만든다.

개발용의 경우에는 개발용을, 배포의 경우에는 배포용으로 발급을 받는다. 나의 경우에는 개발용만 발급을 받았다.

다음으로는 App의 ID를 선택한다. 나의 경우에는 app, widget(extension), watch, watch(extension) 모두 받았었어야 해서 총 4번 .. 이 과정을 반복해서 profile을 만들었다.

다음으로는 이 앱의 Certificate를 선택한다.

그리고 해당 앱을 같이 개발하고 있는 팀원들의 디바이스를 선택한다.

그리고 provisioning profile 이름을 넣은 후 provisioning profile을 만든다 !

그리고 나면, 이렇게 provisioning Profile을 다운 받을 수 있다 !

+) 이때 app Group이 추가된 녀석은 이렇게 Capabilities에 추가되어 있음을 확인할 수 있다.

나는 해당 앱을 빌드하기 위해서 4가지(app, widget 등)의 provisioning profile이 필요했기 때문에 다운을 다 받은 후에는 이렇게 4개의 provisioning profile을 받았다

 

팀원이 해야 하는 일

1. 팀 프로젝트 초대 승락하기

리버에게 알려준 이메일에 들어가서 초대를 승락하는 버튼을 눌러 해당 프로젝트에 조인한다.

 

2. 리버에게 UDID를 전달하기

UDID를 알아내는 방법

 

3. 리버에게 Certificate와 provisioning profile 받기

그냥.. slack을 통해서 주고 받았지만, 기업에서는 air drop을 쓴다고 하더라..

4. Certificate

리버에게 받은 Certificate를 키체인에 넣어야 한다. (드래그 드롭을 하면 됨)
그리고 리버가 public key로 만들 때 설정했던 암호를 입력한다.

 

 

5. provisioning profile target에 맞게 넣어주기

targets -> Signing&Capabilites 선택
( 이때 혹시 Debug, Release 따로 하신 분들이 있다면 따로 선택해서 각각 넣어줘야 합니다. )


Automatically manage signing 선택 취소
Provisioning Profile -> import Profile 선택후 해당 Provisioning Profile 넣기

 


기나길고 긴 ... provisioning profile과 certificate에 대해서 알아봤다. 한 4일동안 씨름한다고 진짜 고생을 했지만,,, 그래도 잘 끝나게 되어 다행이다.. 한 달 뒤쯤에 다시 돌아와서 해당 문서도 좀 읽고 wwdc도 보면서 내용을 더 다잡아야 겠지만, 그래도 잘 싸웠ㄷr....

이후 해결해야 하는 궁금증 ( 혹시 아시는 분이 있다면 댓글 부탁드립니다. )

1. app group이 추가 될 때마다 팀원들이 다 다시 provisioning profile을 받아야 하는 걸까 ?
2. 애플은 이 귀찮은 작업을 고수하는 이유가 뭘까 ? 어느 보안에 좀 더 신경을 쓴 걸까?
3. extention(widget, watch)을 한 app들을 각각 따로 provisioning profile을 받는 게 귀찮다. app groups와 같은 것 때문에 이런 과정을 거쳐야 하는 걸까 ?
4. app Groups 추가하는 방법 ..


+) 그리고 왜인지 app groups에 추가가 안돼서

여기서 수동으로 추가를 했더니 되었다.

 

참고한 블로그들..

 

코드사이닝, 인증서, 프로비저닝 프로파일이란?

애플 개발자라면 꼭 알아야할 코드사이닝, 인증서, 프로비저닝 프로파일의 개념 및 실행 과정에 대해 알아보도록 하겠습니다.

medium.com

 

 

팀 세팅 작업 : Certificate, Provisioning profile 생성 및 등록 과정 정리

팀 세팅을 위한 작업인 Certificate 인증서 및 Provisioning profile을 생성하고 등록하는 과정을 정리한 포스팅 입니당 ! 1. 개인 개발자 계정에 팀원 초대 앱 스토어 사이트에 로그인 후 - 사용자 및 액

yesiamnahee.tistory.com

 

반응형
Comments