iOS 앱을 개발하여 빌드하고 테스트하여 배포하기 까지의 전체과정을 다 해본 개발자라면 애플개발자 콘솔의 잦은 변경과 앱서명 관련하여 간혹 실패하는 경우 수많은 고민을 거쳐 스택오버플로를 통해서 문제를 해결하고는 할것이다.
결국 경험이 재산이 되는데 딱히 정리가 잘 되어 있는 문서를 찾지 못하여 내가 아는 범위에서 정리를 좀 하려고 한다.
이게 개념이 잡히지 않으면 개발환경 설정 시 마다 고생하기 마련이다.
일단 기본적으로 애플은 앱실행권한을 철저하게 관리를 하고 있다. 당연하게도 이 권한이 획득되지 못하면 앱이 실행이 될수 없다.
제일먼저 해야 할 일은 애플로부터 인증서를 발급받아야 한다. 그리고 단말에서 실행을 하려면 프로비저닝이 단말에 설치가 되어야 한다.
프로비저닝은 단말과 애플인증서의 연결해주는 역할을 하며 권한을 획득하여 얻어지면 앱이 실행이 된다. 프로비저닝프로파일 만들때 단말목록에서 설치하고자 하는 단말을 선택할 수 있는것을 알수 있다.
이 과정은
1. 애플인증서 생성
2. 프로비저닝 생성
3. 빌드 및 실행
이 되는데 하나하나씩 정리해 보자
1. 애플인증서 생성
개발자 PC에 키체인앱은 개인키와 공개키를 가지고 있다 이를 기반으로 먼저 CSR(Certificate Signing Request)을 먼저 만들어야 한다.
(1) 키체인 앱 실행
(2) 키체인접근 > 인증서 지원 > 인증기관에서 인증서 요청 선택
(3) 개발자의 이메일주소와 이름을 입력
(4) 요청항목의 "디스크에 저장됨" 선택
(5) 계속을 누르면 CertificateSigningRequest.certSigningRequest 파일이 저장된다.
저장된 CSR파일을 애플개발자 콘솔에 인증서 추가 화면에서 등록한다.
(1) https://developer.apple.com/ 접속 및 로그인
(2) Certificates, Identifiers and Profile > Certificates > Development 이동
(3) 추가버튼 누르고 iOS App Development선택하고 화면 안내에 따라 CSR파일 등록
(4) 등록 완료되면 인증서 파일 다운로드
동일한 방법으로 Production의 AppStore/Enterprise 와 Ad Hoc 선택하여 배포용도 등록한다.
2. 프로비저닝 생성
프로비저닝은 앱아이디별로 생성이 가능하며 앱아이디를 먼저 등록해주어야 한다.
등록된 앱아이디로 Provision Profiles 화면에서 안내에 따라 개발과 배포용을 등록한 후 프로비저닝 파일을 다운로드 한다.
이 때 개발용의 경우 설치를 허용할 단말을 선택할 수 있는데 이 화면에서 선택한 단말들만 해당 프로비저닝으로 설치및 실행이 가능하다.
위 과정을 거치면
1. 개발자의 공개키와 개인키
2. 애플이 인증한 인증서
3. 디바이스에 설치 가능한 프로비저닝
위 3가지로 빌드를 하면 .app파일이 생성되며 생성된 app파일은 다음 2가지로 구성된다.
1. 실제로 사용될 프로비저닝 프로파일 : 빌드시 사용된 프로비저닝이다.
2. _CodeSignature 폴더 : CodeResources 파일을 담고 있고 모든 파일의 암호화 해시정보를 갖고 있다.
이렇게 만들어진 .app파일이 설치되어 실행될떄 Adhoc, Enterprise, AppStore가 각각 다르게 실행이 되어 진다.
1. AdHoc버전의 앱은 디바이스에 설치되어 실행될때
(1) .app에 포함된 프로비저닝 프로파일이 애플인증서로 서명되었는지 확인
(2) CodeResources참조하여 모든 파일의 해시를 확인하여 무결성 체크
(3) 디바이스에 프로비저닝 프로파일이 있는지 확인
2. 엔터프라이즈배포의 경우는 애플은 그 회사를 신뢰하고 별도의 확인과정을 거치지 않고 바로 실행되게 해준다.
3. 앱스토어배포의 경우는 그 어떤 디바이스에서도 실행될수 없다. 오로지 애플에 제출용으로만 사용이 가능하며 애플이 리뷰후 다시 사인하여 배포한다.
만일 새로운 팀원이나 다른 PC에 개발환경을 설정할 때 매번 애플인증서를 만들수는 없다.
이 때는 이미 등록된 인증서와 해당 인증서를 등록한 개발자의 키파일을 전달 받아서 설치해주어야 한다. 그러지 않으면 인증서의 출처를 확인하지 못하여 정상적으로 빌드가 안된다.
#ios #xcode #Code_signature
댓글 없음:
댓글 쓰기