Jenkins IOS 빌드
*주의사항
XCode Signing & Capabilities -> Automatically manage signing 체크 하지 말것. 수동으로 쓰다가 체크해서 사용하면 기존에 사용하던 Provisioning 만료 된다는 얘기가 있음
*XCode 빌드
[Profiles 생성]
1.Apple os 키체인 생성 > 맥 에서
2.Certificates 생성 > apple console 에서
3.Profiles 생성 > apple console 에서
>>각 과정은 이전 과정의 결과물을 필요로 하기에 순서대로 진행 되어야 한다.
[빌드프로세스]
1.UnityBuild 하면 XCodeProject 폴더가 생성 됨
2.XCodeProject 안에 프로젝트파일과 워크스페이스 파일이 있는데, 프로젝트는 프로젝트이고 워크스페이스는 솔루션 개념이다.
3.XCode에서 워크스페이스 파일을 열어주고, 메뉴에서 Archive ( 보관소 ) 버튼 눌러주면 아카이브까지 완료 된다. ipa를 만들고 미리 셋팅한 앱센터로 올리는 기능이다.
*젠킨스 오류 추적 순서
빌드 실패시 실패한 빌드의 콘솔로그를 full 로그로 펼친 후, 스크롤을 최하단으로 내린다.
검색어로 Fail, error 으로 찾고, 첫째로 유니티 빌드오류 있는지 확인 후 있다면 보통은 #if def로 감싸져있는 부분이 빌드할때만 오류가 나게끔 되어있는 경우고 빌드가 성공하면 Archive 관련 오류가 있는지 확인 하면 된다.
아카이브 오류가 까다로운데, 잘 되다가 x코드나 ios 버전 업데이트 이슈가 있을 때 오류가 나서 버전을 변경 해 줘야 되는 경우도 있고, 1년마다 인증서관련 오류가 나는 경우도 있다.
그 외 유니티 버전을 올려줘야 하는 경우도 있고 다양한 케이스가 있는데, 추적을 위해서는 xcode 에서 솔루션 파일 열고 수동으로 아카이브 한 뒤 발생하는 오류 로그를 보고 추측하거나 검색 해 보면 된다.
<오류리스트>
*잘 되던 IOS 에서 갑자기 빌드에러
[증상]
유니티 수동빌드에서 빌드 자체가 계속 실패하고, 임포트가 오래걸리고 임포트 하던 도중 알 수 없는 에러가 발생.
[로그]
젠킨스 console output 및 유니티 에러로그
Fatal Error:
dataOffset !=file.GetPosition()
lldb: error:
빌드 후처리 역할을 하는 BuildProcessor.PostBuild() 를 찾을 수 없다고 나온다.
google plugin 관련 코드에서 문제가 있다고 나온다
에디터 버전 변경을 했는데 적용되지 않는다
[원인]
하드 용량 부족.
[해결]
무시했던 에러로그로 검색.
*유니티 구버전에서 batch모드로 빌드 할 때 빌드는 성공하지만 아키이브 할 때 에러가 발생
[XCode 빌드 인증서]
빌드에 필요한 인증서 관련 파일은 아래 2개다.
.moblieprovision
.cer
외부업체 인증서를 사용하는 경우 .moblieprovision 을 전달 받고 .cer이나 .p12를 전달 받는데, cer는 mobileprovision 파일이 참조 하는 파일이므로 없으면 xcode signing이 안 된다. p12를 전달받는다면 비번을 같이 전달 받아야하고, p12를 더블클릭하고 비번을 입력 하면 키체인이 열린다.
열린 키체인에서 내보내기 하면 .cer 파일로 내보낼수있다