개요
앱 개발을 한다면 혼자서 개발을 하는 경우도 있지만, 협업을 통해 진행하는 경우가 대다수입니다.
iOS를 협업으로 진행해보신 분들은 아실 수 있는데, 협업을 진행할 때 다른 사람이 수정한 파일을 pull 받아서 실행하려고 하면
Bundle Identifier와 관련된 문제로 인해 실기기를 빌드할 수가 없는 경우를 겪을 수 있습니다.
혼자 개발할 때는 다음과 같이 Automatically manage sigining이 선택되어 있는 상태에서 실기기를 실행시켜도 문제가 발생하지 않습니다.

Automatically manage signing을 선택해두면, xcode가 자체적으로 Provisioning Profile을 생성하고, 해당 Provisioning Profile에는 App ID, Certificate Signing, Device 등을 등록해주기 때문에 실기기에서 별 다른 문제 없이 실행되는 것입니다.
하지만 협업 시엔 이런 식으로 설정해두면 에러가 나타납니다. 이유는 각각의 노트북에 저장되어 있는 정보(App ID, Certificate Signing 등)를 통해서는 다른 기기에서 실행할 수 없기 때문입니다.
이는 보안성과 관련이 있는데, 다른 팀원의 정보로는 제가 만든 Provisioning Profile에 접근할 수 없기 때문입니다.
예를 들면 제가 만든 앱을 다른 누군가가 해킹을 하여 훔쳐 다른 행동을 수행할 수도 있는데, 이러한 보안 장치(Provisioning Profile)가 있다면 더욱 더 안전할 것이기 때문입니다.(그냥 단순한 예시입니다,,)
따라서 '해당 기기에 대해 신뢰'하기 위해서는 Provisioning Profile을 가지고 있어야 하는데, 이를 공유하는 방법에 대해 설명하고자 합니다.
해당 내용을 설명하기 위해선 Apple의 보안성에 대해 알아보겠습니다.
Apple의 보안성
"Apple은 기본적으로 자기들이 만든 하드웨어에 Apple의 승인을 받은 소프트웨어만 실행할 수 있게 합니다."
Apple의 제품들은 보안성이 매우 좋은 뛰어나다는 장점이 있는데, 이는 개발을 할 때에는 다소? 귀찮은 점이 있습니다.
우선 앱을 만들기 위해선 Apple Developer Program을 가입해야 하는데, 1년에 대략 13만원 정도 합니다.
가입을 하면 개발자가 만든 프로젝트를 Apple 기기에서 실행할 수 있게 됩니다.
그 뒤 팀원들과 협업을 하기 위해선 프로비저닝 프로파일(Provisioning Profile)과 인증서(Certificate Signing Request)가 필요합니다.
프로비저닝 프로파일 (Provisioning Profile)

쉽게 말해 프로비저닝 프로파일은 iOS 디바이스와 Apple 인증서를 연결하는 역할을 합니다.
프로비저닝 프로파일에는 App ID, 개발자들이 받은 인증서(Development Certificate)와 기기(Device)를 모아놓은 파일입니다.
App ID에는 Bundle ID가 있고, 기기(Device)에는 해당 앱을 구동시킬 수 있는 기기들에 대한 UUID 값이 들어있습니다.
요약하자면 개인이 작업할 때에는 자동적으로 프로비저닝 프로파일을 생성해주는데, 여기에는 다른 사람에 대한 정보가 없기 때문에 다른 사람이 내가 사용하고 있는 Bundle Identifier를 사용하지 못하게 되는 것입니다. 따라서 이를 다른 사람과 공용으로 사용하기 위해 프로비저닝 프로파일을 생성하고, 기기를 지정하는 등의 작업을 수행하는 것입니다.
과정
이게 본격적으로 시작하겠습니다.
팀(내 계정)에 개발자를 추가합니다.
우선 App Store Connect에 로그인을 한 뒤 [사용자 및 엑세스]에서 같이 협업할 개발자를 추가해줍니다.

초대를 수락하면 다음과 같이 개발자들이 추가가 되어있음을 확인할 수 있습니다.

Certificate Signing Request(CSR)을 생성해줍니다.
CSR이 있어야 인증서를 생성할 수 있기 때문에, CSR을 생성해줍니다.
우선 키체인 접근을 열어줍니다.

그 뒤 상단 메뉴에서 키체인 접근 -> 인증서 지원 -> 인증 기관에서 인증서 요청을 클릭해줍니다.
인증서에 이메일 주소를 입력하고, 디스크에 저장됨을 클릭한 뒤, 계속을 클릭하여 생성해줍니다.

CSR을 생성하면 CertificateSigningRequest.certSigningRequest라는 파일이 생성됩니다.

인증서(Certificate)를 등록해줍니다.
Apple Developer 사이트에서 Account -> Certificate(인증서)에서 +버튼을 클릭하여 인증서를 등록합니다.

개발용 인증서는 Development라고 적혀있고, 배포용 인증서는 Distribution이라고 적혀있는 것입니다.

그 뒤 CSR 파일을 업로드해주면 됩니다.

그러면 인증서가 발행되는데, 해당 인증서를 다운받아줍니다.

.cer 형식의 인증서가 생기는데, 해당 인증서를 더블 클릭하여 맥북의 키체인에 등록해줍니다.

그럼 인증서가 등록되어 있는 것을 확인할 수 있는데, 해당 인증서와 키를 둘 다 선택하여 2개 항목 내보내기를 클릭합니다.
p12 파일을 선택하고 클릭하면 해당 인증서를 열기 위한 암호를 설정하도록 나타나는데, 설정을 하고 확인을 눌러줍니다.
해당 암호는 팀원들이 해당 인증서를 열 때 사용하기 때문에 기억하고 있어야 합니다.

그리하면 p12 확장자를 가진 해당 파일이 생성됩니다.

앱 배포를 진행할 때에도 해당 과정을 진행해주면 됩니다.
Identifier 생성하기
다음은 Identifier를 생성해야 합니다. 해당 Identifier는 Bundle Identifier입니다.
Identifier 또한 필요한 목적에 맞게 선택한 후, Bundle ID와 설명(Description)을 작성하면 완료됩니다.

밑에 보시면 XC ~라고 적혀있는 Identifier들이 있는데, 저것들은 자동으로 생성한 Bundle Identifier입니다.
프로비저닝 프로파일(Provisioning Profile) 생성하기
다음으로는 프로비저닝 프로파일을 생성할 차례입니다.
Apple Developer 사이트에서 Account -> Profiles를 선택합니다.
목적에 맞게 선택한 후, App ID에 아까 만든 Identifier를 입력합니다.
그리고 해당 프로비저닝 프로파일을 사용할 수 있는 계정만 선택한 뒤, 프로비저닝 프로파일 이름을 설정하면 완성입니다.

여기서 주의해야 할 점은 만약 앱 안에 여러 타겟이 있다면, 각 타겟에 대한 Bundle Identifier와 프로비저닝 프로파일을 생성해주어야 합니다.
예를 들어 앱 내에 iOS와 WatchOS를 둘 다 진행하고 있다면, iOS에 대한 Identifier, 프로비저닝 프로파일을 만들고, WatchOS에 대한 Identifier, 프로비저닝 프로파일을 생성하여 총 Identifier 2개, 프로비저닝 프로파일 2개를 생성해주어야 합니다.
팀원들에게 인증서와 프로비저닝 프로파일을 공유해줍니다.
앞에서 만들고 다운받은 인증서(.p12)와 프로비저닝 프로파일(.mobileprovision)을 팀원들에게 공유해줍니다.
파일을 받은 팀원 또한 인증서를 더블 클릭하여 키체인 등록을 해주고, 인증서가 등록되면 프로젝트에서 Automatically manage sigining를 해제하고 프로비저닝 프로파일을 import해주면 같은 Bundle identifier로 작업을 진행할 수 있습니다.

보안상의 이유로 매우 복잡하지만,, 해당 작업을 진행한다면 협업 시에 매번 Bundle Identifier를 변경하는 귀찮음을 없앨 수 있습니다.
'iOS' 카테고리의 다른 글
[UIKit] UILabel.text와 문자열 보간법의 옵셔널 표현의 차이 (0) | 2025.01.03 |
---|---|
[iOS] SwiftLint 설치 및 적용하기 (0) | 2023.12.23 |
[iOS] Firebase FCM을 이용한 서버 푸시 구현 (4) | 2023.11.15 |
[iOS] UserNotification을 사용하여 로컬 알림 만들기 (0) | 2023.10.03 |
[iOS] 앱스토어 배포하기 및 배포 과정 (2) | 2023.09.09 |
개요
앱 개발을 한다면 혼자서 개발을 하는 경우도 있지만, 협업을 통해 진행하는 경우가 대다수입니다.
iOS를 협업으로 진행해보신 분들은 아실 수 있는데, 협업을 진행할 때 다른 사람이 수정한 파일을 pull 받아서 실행하려고 하면
Bundle Identifier와 관련된 문제로 인해 실기기를 빌드할 수가 없는 경우를 겪을 수 있습니다.
혼자 개발할 때는 다음과 같이 Automatically manage sigining이 선택되어 있는 상태에서 실기기를 실행시켜도 문제가 발생하지 않습니다.

Automatically manage signing을 선택해두면, xcode가 자체적으로 Provisioning Profile을 생성하고, 해당 Provisioning Profile에는 App ID, Certificate Signing, Device 등을 등록해주기 때문에 실기기에서 별 다른 문제 없이 실행되는 것입니다.
하지만 협업 시엔 이런 식으로 설정해두면 에러가 나타납니다. 이유는 각각의 노트북에 저장되어 있는 정보(App ID, Certificate Signing 등)를 통해서는 다른 기기에서 실행할 수 없기 때문입니다.
이는 보안성과 관련이 있는데, 다른 팀원의 정보로는 제가 만든 Provisioning Profile에 접근할 수 없기 때문입니다.
예를 들면 제가 만든 앱을 다른 누군가가 해킹을 하여 훔쳐 다른 행동을 수행할 수도 있는데, 이러한 보안 장치(Provisioning Profile)가 있다면 더욱 더 안전할 것이기 때문입니다.(그냥 단순한 예시입니다,,)
따라서 '해당 기기에 대해 신뢰'하기 위해서는 Provisioning Profile을 가지고 있어야 하는데, 이를 공유하는 방법에 대해 설명하고자 합니다.
해당 내용을 설명하기 위해선 Apple의 보안성에 대해 알아보겠습니다.
Apple의 보안성
"Apple은 기본적으로 자기들이 만든 하드웨어에 Apple의 승인을 받은 소프트웨어만 실행할 수 있게 합니다."
Apple의 제품들은 보안성이 매우 좋은 뛰어나다는 장점이 있는데, 이는 개발을 할 때에는 다소? 귀찮은 점이 있습니다.
우선 앱을 만들기 위해선 Apple Developer Program을 가입해야 하는데, 1년에 대략 13만원 정도 합니다.
가입을 하면 개발자가 만든 프로젝트를 Apple 기기에서 실행할 수 있게 됩니다.
그 뒤 팀원들과 협업을 하기 위해선 프로비저닝 프로파일(Provisioning Profile)과 인증서(Certificate Signing Request)가 필요합니다.
프로비저닝 프로파일 (Provisioning Profile)

쉽게 말해 프로비저닝 프로파일은 iOS 디바이스와 Apple 인증서를 연결하는 역할을 합니다.
프로비저닝 프로파일에는 App ID, 개발자들이 받은 인증서(Development Certificate)와 기기(Device)를 모아놓은 파일입니다.
App ID에는 Bundle ID가 있고, 기기(Device)에는 해당 앱을 구동시킬 수 있는 기기들에 대한 UUID 값이 들어있습니다.
요약하자면 개인이 작업할 때에는 자동적으로 프로비저닝 프로파일을 생성해주는데, 여기에는 다른 사람에 대한 정보가 없기 때문에 다른 사람이 내가 사용하고 있는 Bundle Identifier를 사용하지 못하게 되는 것입니다. 따라서 이를 다른 사람과 공용으로 사용하기 위해 프로비저닝 프로파일을 생성하고, 기기를 지정하는 등의 작업을 수행하는 것입니다.
과정
이게 본격적으로 시작하겠습니다.
팀(내 계정)에 개발자를 추가합니다.
우선 App Store Connect에 로그인을 한 뒤 [사용자 및 엑세스]에서 같이 협업할 개발자를 추가해줍니다.

초대를 수락하면 다음과 같이 개발자들이 추가가 되어있음을 확인할 수 있습니다.

Certificate Signing Request(CSR)을 생성해줍니다.
CSR이 있어야 인증서를 생성할 수 있기 때문에, CSR을 생성해줍니다.
우선 키체인 접근을 열어줍니다.

그 뒤 상단 메뉴에서 키체인 접근 -> 인증서 지원 -> 인증 기관에서 인증서 요청을 클릭해줍니다.
인증서에 이메일 주소를 입력하고, 디스크에 저장됨을 클릭한 뒤, 계속을 클릭하여 생성해줍니다.

CSR을 생성하면 CertificateSigningRequest.certSigningRequest라는 파일이 생성됩니다.

인증서(Certificate)를 등록해줍니다.
Apple Developer 사이트에서 Account -> Certificate(인증서)에서 +버튼을 클릭하여 인증서를 등록합니다.

개발용 인증서는 Development라고 적혀있고, 배포용 인증서는 Distribution이라고 적혀있는 것입니다.

그 뒤 CSR 파일을 업로드해주면 됩니다.

그러면 인증서가 발행되는데, 해당 인증서를 다운받아줍니다.

.cer 형식의 인증서가 생기는데, 해당 인증서를 더블 클릭하여 맥북의 키체인에 등록해줍니다.

그럼 인증서가 등록되어 있는 것을 확인할 수 있는데, 해당 인증서와 키를 둘 다 선택하여 2개 항목 내보내기를 클릭합니다.
p12 파일을 선택하고 클릭하면 해당 인증서를 열기 위한 암호를 설정하도록 나타나는데, 설정을 하고 확인을 눌러줍니다.
해당 암호는 팀원들이 해당 인증서를 열 때 사용하기 때문에 기억하고 있어야 합니다.

그리하면 p12 확장자를 가진 해당 파일이 생성됩니다.

앱 배포를 진행할 때에도 해당 과정을 진행해주면 됩니다.
Identifier 생성하기
다음은 Identifier를 생성해야 합니다. 해당 Identifier는 Bundle Identifier입니다.
Identifier 또한 필요한 목적에 맞게 선택한 후, Bundle ID와 설명(Description)을 작성하면 완료됩니다.

밑에 보시면 XC ~라고 적혀있는 Identifier들이 있는데, 저것들은 자동으로 생성한 Bundle Identifier입니다.
프로비저닝 프로파일(Provisioning Profile) 생성하기
다음으로는 프로비저닝 프로파일을 생성할 차례입니다.
Apple Developer 사이트에서 Account -> Profiles를 선택합니다.
목적에 맞게 선택한 후, App ID에 아까 만든 Identifier를 입력합니다.
그리고 해당 프로비저닝 프로파일을 사용할 수 있는 계정만 선택한 뒤, 프로비저닝 프로파일 이름을 설정하면 완성입니다.

여기서 주의해야 할 점은 만약 앱 안에 여러 타겟이 있다면, 각 타겟에 대한 Bundle Identifier와 프로비저닝 프로파일을 생성해주어야 합니다.
예를 들어 앱 내에 iOS와 WatchOS를 둘 다 진행하고 있다면, iOS에 대한 Identifier, 프로비저닝 프로파일을 만들고, WatchOS에 대한 Identifier, 프로비저닝 프로파일을 생성하여 총 Identifier 2개, 프로비저닝 프로파일 2개를 생성해주어야 합니다.
팀원들에게 인증서와 프로비저닝 프로파일을 공유해줍니다.
앞에서 만들고 다운받은 인증서(.p12)와 프로비저닝 프로파일(.mobileprovision)을 팀원들에게 공유해줍니다.
파일을 받은 팀원 또한 인증서를 더블 클릭하여 키체인 등록을 해주고, 인증서가 등록되면 프로젝트에서 Automatically manage sigining를 해제하고 프로비저닝 프로파일을 import해주면 같은 Bundle identifier로 작업을 진행할 수 있습니다.

보안상의 이유로 매우 복잡하지만,, 해당 작업을 진행한다면 협업 시에 매번 Bundle Identifier를 변경하는 귀찮음을 없앨 수 있습니다.
'iOS' 카테고리의 다른 글
[UIKit] UILabel.text와 문자열 보간법의 옵셔널 표현의 차이 (0) | 2025.01.03 |
---|---|
[iOS] SwiftLint 설치 및 적용하기 (0) | 2023.12.23 |
[iOS] Firebase FCM을 이용한 서버 푸시 구현 (4) | 2023.11.15 |
[iOS] UserNotification을 사용하여 로컬 알림 만들기 (0) | 2023.10.03 |
[iOS] 앱스토어 배포하기 및 배포 과정 (2) | 2023.09.09 |