-
[WWDC 2018] Behind the Scenes of the Xcode Build ProcessPrograming/iOS 2021. 9. 15. 21:28
안녕하세요, 5anniversary입니다!
오늘은 18년도에 나온 세션인 Behind the Scenes of the Xcode Build Process를 다뤄보려고 합니다.
이번 세션에서는 Xcode에서 빌드를 할 때 돌아가는 프로세스에 대해서 알아봅시다!
Xcode에서 command + B를 누르게 될 경우에 Xcode에서 표현되는 다양한 파일들을 우리가 만들고,
사용하는 어플리케이션으로 만들기 위해서 어떤 일이 일어날까요?!
우선 이렇게 다양한 확장자, 역할을 가진 파일들이 있을 거예요.
세션에서는 간단하게 돌아가는 순서를 보여주었는데요!
왼쪽에서부터 오른쪽으로 가는 순서대로 빌드가 된다고 합니다!
빌드는 어떻게 되는지 명령어를 간단하게 보여주기도 했는데요.
이런 명령어를 통해서 빌드가 된다고 합니다.
빌드가 실행될 때 실행되는 파일들이 어떻게 정렬이 될까요? 1
의존성 정보(?)에 의해서 결정이 되고 정렬이 된다고 설명해주는데요, 요 아래 순서에 따라서 각각이 실행되고 아웃풋에 따라서 변경이 되는 로직이 구성이 되어있습니다,
좀 더 자세히 따져보면 이렇게 볼 수가 있어요,
빌드 프로세스에 대해서 트리 구조로도 보여주는데요!!
빌드에서 시간 순대로 그래프를 보여주면
위와 같은 순서로 빌드가 됩니다. 여기서 세션을 발표하시는 분이 강조하신 부분은 병렬적으로 실행이 된다는 부분인데,
빨갛게 보여지는 리소스 파일과 ViewController를 구성하는 Custome View들이 함께 실행된다는 것을 알고 지나가시면 될 듯합니다.
여기서 기존에 obj-c로 코드 작성을 해본 적이 없어서 몰랐던 사실 하나를 알게 되었는데요
파일을 컴파일하는 과정에서 dependency(d) 파일을 한번 만들게 되면
dependency 파일을 계속 이용해서 컴파일을 한다는 것을,,, 이번에 알게 되었습니다...
이런 이유로 매번 빌드할 때마다 처음부터 빌드를 할 필요가 없어지게 되는 거죠...!
위에서 보여드린 트리 구조의 빌드 시스템에서 한번 빌드가 돌아가게 되면!!
이렇게 순식간에 빌드가 되는 거예요!!
그다음으로 빌드 타임에서 Signatures(서명) 이 변경이 되었는지 확인하는 프로세스도 설명이 나오는데요
- 각각의 빌드 그래프가 Signatures(서명)을 가지고 있는지 확인
- 입력, 기타 작업의 메타데이터 정보로 확인
- 현재와 이전 빌드의 작업 Signatures(서명)을 추적하는 시스템으로 확인
- 작업을 실행해야 하는지 결정하기 위해 비교로서 확인
이런 방식으로 서명이 변경된 것을 확인... 한다고?! 합니다.
자!! 여기서 우리가 빌드를 할 때 시스템을 위해서 할 수 있는 게 무엇이 있을까요?!
위에서 알려줬던 실행 순서는 시스템 레벨에서 알아서 해준다고... 생각을 할 필요는 없다고 합니다...
하지만 우리가 생각할 것은 실행을 할 때의 의존성에 대해 생각을 해야 한다고 합니다!!
의존성들(dependencies)은 어디에서부터 올까요??
- Built in
- Target Dependencies
- Implicit dependencies
- Build phase dependencies
- Scheme order dependencies
우리들이 평소에 개발하면서 자주 봐왔던 것들이죠...?! 호호...
요론 것들을 빌드할 때... 잘 고려 해봐야겠... 습니다..
이번 세션 발표자 분도... 모든 의존성은 개발자에게 온다고...
키노트에 넣어주셨습니다... 호호...
추가적으로 빌드 타임에서 체크할만한 팁들을 주는데요,
1. build phase에서 커스텀 쉘 스크립트를 넣어줄 때, input과 output을 넣어줘야 합니다
2. 프로젝트 의존성에 자동 링크를 피해 주는 게 좋습니다.
3. 확실하게 의존성을 추가해주세요!
4. 프로젝트 레퍼런스와 Workspace를 만들어주세요.
이번 세션의 첫 번째 keynote를 간단하게 정리해봤는데요,
다음 keynote는 Clang이 빌드될 때 어떤 프로세스로 돌아가는지 톺아보는 시간이 될 거 같습니다.
잠시만... 기다려주세요!!!
'Programing > iOS' 카테고리의 다른 글
[WWDC 2020] Advances in UICollectionView (0) 2021.08.11 [WWDC 2021] What’s new in AVFoundation (1) 2021.07.28 [WWDC 2021] async / await (0) 2021.06.30 [iOS] fastlane🚀으로 TestFlight/deploy 자동화 적용해보기!! (0) 2020.10.21 [iOS] custom Font 쉽게 적용하기!! (0) 2020.10.16