Xcode를 사용해서 iOS 개발을 할 때는 다른 사람과 같이 협업하는 경우도 많습니다.
하지만 프로젝트의 Bundle Identifier는 유일하기 때문에 다른 같은 프로젝트여도 다른 사람이 작업할 때는 그 사람의 Bundle Identifier를 사용해야 합니다.
그래서 다른 사람이 작업한 내용을 pull 해오면 Bundle Identifier를 다시 내껄로 수정해줘야 하는 경우가 많았습니다.
이런 상황을 방지하고 싶다면, 개발자 팀 추가를 해준 뒤, Provisioning Profile(프로비저닝 프로파일)과 Certificate(인증서)를 해당 팀원에게 공유해주면 됩니다.
위의 세팅이 잘 된다면 이후 협업 시에 팀원끼리 같은 Bundle id를 사용해도 충돌이 나지 않습니다.
Certificate(인증서)는 애플에서 해당 개발자를 신뢰한다고 증명하는 인증서를 말합니다. Xcode로 개발 시에 실기기로 빌드하려면 개발자 등록을 해야 하고 이 때 등록해주는 것이 Certificate입니다.
Provisioning Profile(프로비저닝 프로파일)은 iOS 기기와 애플의 인증서 사이를 연결하는 역할을 담당한다고 합니다.
아무튼 이제 개발자를 팀에 추가하고, 인증서와 프로파일을 공유하는 방법을 알아보겠습니다.
개발자 추가
1. 팀(내 계정)에 개발자 추가하기
- App Store Connect에 로그인 후 [사용자 및 엑세스]에서 같이 협업할 개발자를 추가해줍니다.
https://appstoreconnect.apple.com
https://appstoreconnect.apple.com
appstoreconnect.apple.com
- 신규 사용자 추가 버튼을 클릭한 뒤 팀원을 초대합니다.
2. 같이 작업하는 프로젝트(앱) 추가하기
App Store Connect의 [앱] 탭을 클릭하고, +버튼을 눌러서 작업하는 프로젝트를 추가해줍니다.
제가 세팅할 때는 앱도 추가를 했었는데 이 과정이 필수적인지는 확실하지 않습니다. 앱스토어 출시를 위해 필요한 과정인 것 같긴 한데, 일단 저는 이 과정도 진행했기 때문에 적어놨습니다.
혹시 아시는 분이 있다면 댓글 부탁드리겠습니다.
인증서 & 프로비저닝 생성
팀원에게 공유할 인증서와 프로비저닝 프로파일을 직접 생성해줍니다.
1. Certificate Signing Request (CSR) 생성
인증서를 생성하기 위해 CSR을 먼저 생성해줍니다.
- 키체인 접근 앱을 열어줍니다.
- 그 다음 상단 메뉴에서 [키체인 접근] - [인증서 지원] - [인증 기관에서 인증서 요청]을 클릭해줍니다.
- 사용자 이메일 주소에 이메일을 입력해주고, 요청 항목에 [디스크에 저장됨]을 선택해서 CSR을 생성해줍니다.
CSR 생성을 완료하면 이런 파일이 만들어집니다.
2. Certificate 발행 및 등록
- Apple Developer 사이트의 Account - Certificates 메뉴에서 인증서를 새로 발행해줍니다.
https://developer.apple.com/account/resources/certificates/list
로그인 - Apple
idmsa.apple.com
- + 버튼을 눌러서 원하는 유형의 인증서를 추가해줍니다.
- 개발용 인증서는 OOO Development
- 배포용 인증서는 OOO Distribution
- (저는 이번 작업 시에는 iOS App Development로 추가했는데, 구글링 해봤을 때는 Xcode 11버전 이상부터는 Apple Development로 추가하는 것을 권장한다고 했던 것 같습니다.)
- 이전 과정에서 생성한 CSR을 선택해줍니다.
- 발행된 인증서를 맥에 다운로드 해줍니다.
이런 파일이 다운로드 됩니다.
- 다운받은 인증서를 더블클릭하면 맥북 키체인에 공개키와 함께 등록됩니다.
- 인증서와 공개키를 같이 내보내기 해줍니다.
- 원하는 이름을 설정해서 .p12 형식으로 내보내기 해줍니다.
- 파일을 열 때 사용할 암호를 설정해줍니다.
- 위 과정을 완료해주면 이런 파일이 생성됩니다.
위 과정들은 Development 유형에 대해서만 해도 괜찮지만, 이후 앱 배포 시에는 Distribution 유형의 인증서도 발행해주어야 합니다. 저는 하는 김에 Development와 Distribution 모두 진행해 주었습니다.
3. Provisioning Profile 생성
- Apple Developer - Account - Profiles로 들어가서 프로비저닝 프로파일을 생성해줍니다.
https://developer.apple.com/account/resources/profiles/list
로그인 - Apple
idmsa.apple.com
- 원하는 유형(개발용 / 배포용)을 선택해줍니다.
- 해당 앱 타겟에 대한 번들ID를 지정해줍니다.
- 만약 앱에 여러 타겟이 있다면 각 타겟의 Bundle ID에 대응하는 프로파일들을 모두 생성해주어야 합니다.
- 앞서 생성한 Certificate(인증서)를 선택해줍니다.
- 팀원에게 공유하고자 하는 인증서만 체크가 되면 모두 선택해도 상관은 없어 보입니다.
- 개발에 사용할 디바이스를 선택해줍니다.
- 계정에 초대된 팀원의 기기도 뜨는 것 같습니다.
- 모두 선택 해줍니다.
- 원하는 이름을 설정하고 Generate를 눌러줍니다.
- 생성된 프로비저닝을 다운로드 해줍니다.
다운로드 해주면 이런 파일이 다운받아집니다.
만약 앱 내에 여러 타겟이 있다면 각 타겟의 번들ID에 대응하는 프로파일을 모두 생성해주어야 합니다.
저의 경우는 앱 내에 스크린타임 익스텐션 타겟이 4개가 추가로 있기 때문에 앱 타겟을 포함한 각각의 모든 타겟들에 대해 프로비저닝을 생성해주었습니다.
4. 팀원에게 인증서와 프로비저닝 프로파일 공유
앞의 과정에서 다운받은 인증서(.p12)와 프로파일(.mobileprovision)을 모두 팀원에게 공유해줍니다. (카카오톡, 에어드랍 등...)
보안 상의 이유로 애플에서 권장하는 방식은 에어드랍이라고 합니다.
파일을 받은 팀원 쪽에서 인증서를 더블클릭 해주면 똑같이 팀원 맥북의 키체인에 받은 인증서가 등록됩니다.
인증서가 등록되고 나면 해당 인증서가 적용된 프로비저닝 프로파일 덕분에 같은 번들ID를 사용해도 오류가 나지 않게 됩니다!!!
요약
- App Store Connect에서 내 계정에 팀원을 초대해준다.
- App Store Connect에서 앱도 추가해준다. (내 계정의 앱이기 때문에 내 계정에 초대된 팀원도 관리 가능)
- 인증서를 만들기 위해 키체인 등록 앱에서 CSR을 생성해준다.
- 생성한 CSR을 가지고 Apple Development 사이트의 Certificates 메뉴에서 인증서를 생성해준다. (개발용/배포용)
- 생성한 인증서는 맥북에 다운로드해준다.
- 인증서를 더블클릭하면 키체인에 등록됨
- 키체인에서 공개키와 함께 .p12 파일로 내보내기
- Apple Development 사이트의 Profiles 메뉴에서 프로비저닝 프로파일을 생성해준다. (앱 타겟들에 대해 + 개발용/배포용)
- 생성한 프로파일들을 맥북에 다운로드해준다. (.mobileprovision)
- 맥북에 저장된 인증서(.p12)와 프로비저닝 프로파일(.mobileprovision)을 팀원에게 공유
- 팀원이 인증서를 더블클릭해서 키체인에 등록하면 끝
참고 포스팅
https://youngkdevlog.tistory.com/46
협업 시 팀원과 Provisioning Profile 및 Certificate 공유하기
iOS 앱개발을 하다보면 혼자서만 작업하는게 아닌 협업을 자주 하게 되는데요. 혼자서 개발할땐 거의 Automatically manage signing 을 켜둔 상태에서 개발하다보니 XCode 가 알아서 Provisioning Profile 을 만
youngkdevlog.tistory.com
'iOS' 카테고리의 다른 글
[ iOS ] CustomStringConvertible 프로토콜 (0) | 2024.02.13 |
---|---|
[ iOS ] String → URL 변환 시 nil이 반환되는 문제 (0) | 2024.02.12 |
[ iOS ] Watch Connectivity 사용해보기 (0) | 2023.08.08 |
[ iOS ] Core Motion 사용해보기 (0) | 2023.08.08 |
[ iOS ] Swift Package(.swiftpm)에서 .mlmodel 모델 불러오기 (0) | 2023.04.22 |