-
[잡설] 빌드 속도 단축에 대한 고민iOS 2020. 4. 25. 23:48반응형
카르타고가 은근히 귀찮게 하는 구석이 많을듯 합니다.
11.4 에서 엑스코드에서 또 이상한거 해서 소켓-아이오가 카르타고에서 빌드가 안 됩니다.
걍 집에서 슥슥보다가 어? 되네 해서 고쳐서 PR 날렸습니다.
https://github.com/socketio/socket.io-client-swift/pull/1283
민소네님의 블로그를 따라하다보면 프로젝트를 다중 레포로 나누어서 하는 방법도 대충 파악했습니다.
특히 let us go 2019 봄의.. 프레임워크 주도 개발을 하면 잘 될 것 같습니다.
https://www.slideshare.net/MinM9510/a-framework-driven-development-138805806
프레임워크 주도 개발에 관심이 생긴 건, 프로젝트가 갈수록 속도가 저하되어, 카르타고로 옮기기까지 했지만,... 아직도 속도가 그렇게 만족스럽게 빠르진 않다는 것입니다.
시뮬레이터 기준 2분, 뭐 그전에 비하면 기적같은 일이지만, 얼마 못갈것입니다.
RxSwift 기반의 코드들이 계속 추가되면서... 무섭게 발목을 잡을것입니다.
그래서 신규 개발하는 것은 다 프레임워크로 빼놓아야 될 것 같습니다.
그런데. 메인 프로젝트의 빌드 속도가 진짜 빨라지나? 흠. 프레임워크 빌드 후에 메인 프로젝트를 빌드한다고는 하는데, 실제로 샘플 프로젝트를 빌드해보니까, 빌드할때마다 각각의 프레임워크들을 빌드하는 것 같습니다.
이럴 경우... 물론 단일 프레임워크를 개발할 때에는 그것 하나만 빌드하면 되겠지만,
모든 게 엮인 최종 제품의 경우에는 일일히 다시 빌드해야되는게 아닌지 모르겠네요.
카르타고의 경우는 아예 배포 → 프리빌드 뭐 이런 방식이었어서,
한번 배포하고 절대 손을 안 대는 프로젝트는 다시 재빌드할 일이 없었는데 말이죠.
그런데 프레임워크 주도 개발은 그정도까지는 아닌것 같습니다.
실제로 빌드해보니까,, 빌드를 하는건 여전한것 같습니다. 그래서 그렇게 하는 게 흠 과연 좋은가 모르겠음.
- 좋을수도 있겠네.. 몇개 특정 화면은 딱 하나 쓰기 위해서 라이브러리 임포트 엄청하는데.. 그런면에선 좋을지도.
서브모듈이라는 방식도 있어 보입니다.
깃허브 서브모듈로 레포를 따로 빼고, 각각 카르타고로 슈루룩 빌드해놓고 배포하는 방식으로 보입니다.
이거는 한번 개발하고 관심에서 멀어진... 많은 프로젝트를 미리 프리빌드해두는 면에서 더욱 좋아보입니다.
그렇게 방치되어 있는 프로젝트들에 적합하지 않을까 싶습니다.
아마 fastlane 이랑 연결해서... 카르타고 인스톨을 해서 업데이트 쳐주고 이런 게 아닐까 싶습니다.
서브모듈 방식은 좀더 알아봐야될거같습니다.
모노레포에서 Bucks 라는 걸 쓰면 어떻게 더 잘 되는 것 같은데, 일거오빈까 지금 뭐 함부로 할 수 있는 건 아닌거같아보입니다.
https://medium.com/@h2s1880/buck으로-ios앱-빌드해보자-d811ad541416
좀더 카르타고 공식문서를 읽어봐야겠음. 영어라서 읽기 힘들다..
민소네 블로그에는... 스태틱 라이브러리로 하면서 런치타임을 줄이는 고민이 함께되어있음.
나는 그런 고민까진 필요없을거같음.
이 아저씨가 설명을 잘 해놨음.
- Clang 10 Documentation - Modules
- Modular framework, creating and using them
- Injecting and Mocking static frameworks in Swift
- Stackoverflow - iOS merge several framework into one
- How we cut our iOS app’s launch time in half (with this one cool trick)
- WWDC 2016 - Optimizing App Startup Time
- Grab - Cocoapods Pod Merge
- iOSアプリの起動速度を2倍にするために、複数のDynamic FrameworkをStaticにして、ひとつのDynamic Frameworkを作る with Swift
- Understanding Objective-C Modules
반응형'iOS' 카테고리의 다른 글
애드훅보다 간편하다! 테스트플라이트보다 빠르다! 파이어베이스 iOS 배포를 활용해 보자 (4) 2020.04.26 Xcode 11 에서 애드훅으로 앱을 배포하는 방법, 드롭박스나 구글 클라우드 이용보다 확실한 배포 방법 (1) 2020.04.26 느려터진 iOS 빌드 속도로 고통받는 당신에게, 카르타고를 권장합니다. (0) 2020.04.24 SWIFT 질문들 (0) 2020.03.14 iOS 13에서 리뉴얼된 위치 정보 변경 필독 사항 2 - 위치정보 한 번 허용 (0) 2020.03.07