안녕하세요, 저번에는 TCA를 공부하고, 이제는 Tuist를 공부하고 있습니다.
목표는 기존프로젝트를 Tuist로 마이그레이션까지 해보고싶습니다. (거기에 모듈분리까지)
기존의 Xcode의 인터페이스로 하던것들을 Tuist 코드로 사용해야한다고 생각하니까 많은걸 알아야하더라구요.
Tuist API는 기본이고, Build settings, xcconfig, run script, framework..등등..
거기에 빌드 및 배포까지도 가능해야하니까, 사이닝도 공부하게 되었습니다.
사이닝 공부하면서 인증서도 이번에 확실히 다시 다지게 되었던것 같아요.
개인개발할때는 항상 automatically managing signing 으로 체크해서 크게 관심을 두지않았었는데,
Tuist를 하면서 제대로 이해해보려고 공부했습니다.
예전에는 인증서 Revoke하는게 굉장히 두려웠는데.. 이제는 알것아요.
이번에 글작성하면서 개인계정이기도해서, 과감하게 개인키 삭제, 인증서도 삭제해보고, Revoke해보고 해봤습니다. ㅎ
해보면 별거아니더라구요..!
( 예전에 작성해둔 fastlane글에서 match방법을 이제는 쉽게 할것같다라는 생각이 드네요. ㅎㅋ)
수동으로 사이닝하여 AppStore배포하는 방법
필요 개념
인증서, 프로비저닝 프로파일.
우선 시작하기에 앞서 필요한 기본개념으로는,
앱에 서명하기위한 인증서가 필요하다. 앱이 믿을만한지, 앱이 어떤기능을 필요로하는지 등을 앱에 디지털서명해야하는데, 이때 인증서가 필요하다.
이 인증서에도 종류가 2개가있는데, 하나는 개발용, 하나는 배포용 인증서가 필요하다.
그러므로, 배포용 인증서가 필요하다.
다음 개념으로는, 프로비저닝 프로파일이 필요하다. ( Provisioning Profile )
프로비저닝 프로파일은 공급하기위한 관련개념이라고 보면되고,
디바이스에 앱을 설치가능(공급)여부를 판단하기위함이다.
그래서 프로비저닝 프로파일에는 App Id, 인증서, 디바이스id 등 정보가 포함되어있다.
아래처럼 그려볼수있다.
Development team은 개발자계정을 뜻한다.
자동, 수동 사이닝 차이
따라서 앱스토어에 배포하기 위해서는, 프로비저닝 프로파일과 배포용 인증서가 필요하다.
자동사이닝을 하게되면, Xcode에서 알아서 프로비저닝 프로파일과 배포용인증서를 만들어주어, 개발자는 프로비저닝 프로파일과 인증서에대해 관리가 필요하지 않게된다는 장점이 있다.
그래서 나처럼 개발자계정이 개인계정이라면, 개발용 인증서하나만 가지고있고, 자동 사이닝을 하여 프로비저닝 프로파일과 배포용인증서를 알아서 관리해주어서 내가 신경쓰지않아도 되지만,
수동사이닝을 해야한다면, Xcode에서 대신하던것들을 내가 직접 만들고 관리해야한다.
1. Distribution 인증서 생성
프로비저닝 프로파일을 만들기전에, 배포용인증서가 필요하다.
프로비저닝 프로파일안에는 App Id, 배포용인증서, 디바이스id등등이 포함되어있기 때문이다.
배포용인증서가 없다는 가정하에, 우선 배포용 인증서를 만들어보고 키체인에 등록해본다.
개발자홈페이지가서, 인증서,ID 및 프로파일의 인증서로 들어간다.
Certificates 에서 추가를 눌러서 Distribution을 클릭한다.
CSR 생성
인증서를 만들기위한 요청서를 만든다.
키체인접근 앱을 열어서, 좌측상단 - 인증서 지원 - 인증 기관에서 인증서 요청을 클릭한다.
디스크에 저장하고,
저장한 CSR을 업로드한다.
그럼이제 인증서가 만들어졌고, 다운로드하여 더블클릭하면 키체인에 등록된다.
개인키
CSR만들고, 인증서 만드는 과정에서 쪼금만 더 설명하면,
인증서를 발급받기위해, CSR을 생성할때 개인키, 공개키 쌍으로 만들게되고, 로컬 키체인에 저장된다.
생성한 CSR을 애플에 제공하면, 인증서를 만들어주고, 나중에 앱에 사인할때는 CSR로 만들때 생성된 개인키와 애플의 인증서를 이용한다.
그래서 CSR을 만들면 바로 키체인에 바로 생성된다.
따라서 개인키가 굉장히 중요하다.
실제로 CSR만들때, 개인키 바로 삭제하고나면, 다운받은 인증서는 키체인에 등록이안된다.
또는 키체인에 정상적으로 인증서가 등록한이후에, 예기치못한상황으로 개인키가 없어졌다면,
아래처럼 xcode에서 Missing privatekey for signing certificate 에러가뜨면서 실행이안되는 경우가 있다.
개인계정이야 처음부터 CSR만들어서 개인키 키체인에 저장하고, 인증서 새로 발급받고 다시 키체인에 등록하고 바꿔주면 되는데,
팀계정은 혹시라도 내가 CSR을 만들겠다는 생각은 하지말것..! 뭐...만들어도 상관은 없을것 같은데,
혹여나 기존의 인증서를 Revoke한다거나 이렇게해버리면 인증서를 사용하는 다른 개발자들에게도 여파가갈것이므로...
개인키를 분실했다면, 개인키를 소지하고있는 개발자에게 내보내기해서 받아오면된다.
2. App ID 생성
프로피저닝 프로파일에는 AppId를 포함하기때문에, 우선 app id를 만들어야한다.
아까처럼 위의 개발자계정홈페이지 - Certificates, Identifiers & Profiles 로 가서,
식별자 = Identifiers에서 App ID를 만든다.
요건 이제 내가 수동으로 사이닝할 앱타겟의 id를 만드는것!
3. Provisioning Profile 생성
배포용이기때문에, Distribution의 App Store Connect선택
아까 생성한 App Id 선택
아까 만들어둔 배포용 인증서를 선택.
다운로드!
xcode로 가서, target - Singing&Capabilities 에서
Provisioning Profile에서 import profile 하여 다운로드 받은 프로파일 선택!
위에서 만든 인증서도 적용해주어야한다.
Target - Build settings - Signing - Code Signing Identity 에서 키체인에 있는 배포용 인증서 선택.
간혹 잘안되는 경우는 이슈가 Status에 내용이 잘 나와있다.
예를들어, 프로비저닝 프로파일에 선택한 인증서가 포함안되어있다던가..등등
그러면 다시 배포용인증서 바탕으로 프로비저닝 프로파일 다시만들고, 하면된다.
수동으로 사이닝 및 개발용디바이스에 설치방법
위는 배포용으로 해보았고, 이번엔 실제로 개발하면서 실제디바이스에 실행할때, 수동으로사이닝 하는 방법을 해보겠다
개발하면서 실제디바이스에서 테스트해봐야하므로, 마찬가지로 프로비저닝 파일이 필요하다.
하지만 배포용이 아니므로, 배포용인증서가 아닌, 개발용 인증서를 사용한다
(Ad hoc도 비슷하지만, 요건 배포용인증서를 사용한다. )
1. Developemnt 인증서 생성
보통 Devlopment 인증서는 가지고있지만,
없는경우 위에서 배포용 인증서 만들때와 똑같이 하면된다.
Apple Distribution이 아닌, Apple Development로 체크해야한다.
배포용인증서 만들때처럼 CSR 만들고, 업로드하고 인증서 다운받아서 키체인에 등록하면된다.
2. Provisioning Profile 생성
위의 App ID를 생성했다라고 가정하고, 패스하고,
이번엔 Development - iOS App Development를 체크한다.
App Id 선택하고,
인증서는 배포용인증서가 아닌, 개발용 인증서를 선택한다.
그리고 실행하고자하는 실제디바이스를 체크해준다.
다운받고!
마찬가지로 xcode에서 다운받은 프로비저닝 프로파일 import해주면된다.
끝으로 다음 글은 Tuist 정리글을 올릴건데, 그때까지 Tuist로 열심히 공부를..!
( 근데 Tuist에 Settings에 인증서, 프로비저닝 프로파일 정의해줘도, 결국엔 Xcode 인터페이스에서 프로비저닝 파일은 import해줘야하던데.. 크흠! CI를 위해서 이름을 정의해두는건가 ? 흠..! )
'Xcode' 카테고리의 다른 글
브렌치 변경시 tuist generate 자동화하기 (2) | 2024.10.20 |
---|---|
오픈소스 기여해보기 (feat Tuist) (2) | 2024.10.19 |
Tuist 마이그레이션 후기 (7) | 2024.10.17 |
static framework에 Assets.catalog - image 사용하기 ? (0) | 2024.09.15 |
기존 프로젝트에 Unit Test 추가하기 (1) | 2024.02.08 |