-
Xcode 빌드 속도 높이기2 - cocoapods-binary-cacheSwift 2021. 11. 11. 14:32
위의 글에 이어서 빠른 빌드를 위한 노력2
우아한 형제 기술 블로그에서
CocoaPods의 경우 빌드 시 라이브러리도 함께 빌드 되어 컴파일 속도에 영향을 끼치기 때문에 비교적 가벼운 라이브러리 및 내부 코드에서 디버깅이 필요한 라이브러리를 추가하였고,
Carthage의 경우 내부 코드 디버깅이 필요하지 않고 빌드 시간을 줄일 라이브러리를 추가하였습니다.위와 같은 내용을 보고, 아 이 부분을 놓치고 있구나 방법을 더 찾아봐야겠다고 생각하고 알아보게 되었다.
현재 CocoaPods 만 사용하고 있고, SwiftLint부터 Rx 그외 각종 라이브러리까지 편하다 보니 모든것을 코코아팟으로 사용하고 있었는데 이게 나의 빌드 속도를 늦추고 있다니...!
코코아팟은 클린빌드/아카이브 할때마다 모두 다시 빌드 해야하므로 빌드시간이 현저히 느려집니다. 하지만 카르타고는 미리 빌드된 프레임워크를 사용하기때문에 빠른것이죠.
Carthage가 말하는 'Differences between Carthage and CocoaPods'
찾다보니, 위 내용 외의 아래와 같은 다른 방법도 발견하게 되었다.
Pre-compiling dependencies
https://guides.cocoapods.org/plugins/pre-compiling-dependencies.html
위에 들어가보면,
문제
프로젝트에서 Xcode는 라이브러리를 다시 컴파일 할 필요가 없음에도 여전히 라이브러리를 다시 컴파일 합니다. 대규모 프로젝트에서는 시간이 많이 걸리고 성가시죠.
대답
Xcode가 다시 컴파일할 기회를 주지 않는것이지.
pod install 시점에 사용자가 Podfile에 별도로 지정한 pod에 대해 미리 컴파일을 수행해 framework 파일과 같은 바이너리를 만들고, 사용자의 프로젝트가 pod에 대해 소스코드 대신 바이너리를 참조하도록 하는거다. 그러면 아무리 클린빌드를 한다고 해도 pod에 대한 소스코드를 빌드할 필요가 없을테니 빌드시간이 줄어드는 거다.
https://github.com/leavez/cocoapods-binary
사용방법 -> all_binary로 하거나 아래 처럼 작성 가능!
plugin 'cocoapods-binary' use_frameworks! # all_binary! target "HP" do pod "ExpectoPatronum", :binary => true end
그런데 위의 방법이 적용되지 않으면 다음과 같은 방법을 사용할 수 있다고 한다.
https://github.com/grab/cocoapods-binary-cache
같은 내용이고 사용방법도 아래랑 똑같다.
pod "Alamofire", "5.2.1", :binary => true
하지만 grab 팀이 위의 cocoapods binary 플러그인이 제대로 동작하지 않아서 이래저래 응용해서 만든 것으로 보인다고 한다.
사전 빌드 + 빌드된 파일 관리를 함께 해준다.
결론
pod의 소스코드를 직접 체크해야되는 경우를 제외하고는 빌드 시간을 줄이기 위해
1.
가능한 아이라면 Carthage 로 라이브러리 관리해라.(상황에 맞춰서..!!)2. Pre-compiling dependencies 를 시도해 봐라.
참고 : https://techblog.woowahan.com/2688/, https://bonoogi.postype.com/post/10495540
728x90'Swift' 카테고리의 다른 글
Property Wrapper (0) 2021.12.13 swift Pecker란 (0) 2021.11.15 Swift Moya 설치 및 내용, RxMoya (0) 2021.10.13 자꾸 까먹는 Swift Array 안전하게 배열 조회 하는법 (0) 2021.09.30 Computed Property + Access Control (0) 2021.09.30