기본적으로 cocoapods-binary-cache 라이브러리 뿐 만 아니라 Rome 을 조합해서 사용하여야 한다.
사용하면서 알게 된 것이지만 gemfile 의존성을 잘 확인해서 작업하는 것이 좋다.
그랩에서 만든 라이브러리는 바로 사용 할 수 있는 것이 아니라 Rome로 미리 Prebuild 라이브러리를 생성하고 그것을 이용하여 Prebuild 라이브러리만 만들어 놓은 레포를 생성한 뒤에 이용이 가능하다
Example 분석 👨🏻💻
현재 올라가 있는 예제를 보면 다음과 같은 구조로 되어있다.
.
├── GeneratedFrameworks
└── Manifest.lock
GeneratedFrameworks
GeneratedFrameworks 폴더 안에는 Rome 에서 생성된 framework 파일들이 라이브러리명으로
.zip 압축 되어있으며 그 압축을 풀게되면 형태는 다음과 같다.
- 라이브러리명.framework
- 라이브러리명.pod_name (비어있음)
Manifest.lock
위 파일은 어떻게 생성했을까? 생각을 해보았는데 내용을 보니 Podfile.lock 과 같은 내용이 들어있어서
pod install
실행 이후에 업데이트된 Podfile.lock 파일을 Manifest.lock 이라는 이름으로 업로드 한것 같았다.
Problems ?
현재 그랩 레포 설명 상에서는 Rome을 활용했다 라는 코멘트만 있을뿐 구체적으로 어떤식으로 생성을해서
깃 레포에 올렸는지는 설명이 되어 있지 않아 현재 Example 로 올라가있는 결과물 만을 보고 동작을 유추해서
비슷하게 따라하는 방법 밖에는 없기 때문에 고민이 많았다..
처음에는 그랩에서 만든 스크립트가 자동으로 깃 레포에 Push 까지 해줄거라 기대했지만, 그런것 같지는 않다.
그렇기 때문에 일단 다음과 같은 시나리오를 생각해보았다.
Rome을 이용해서 Prebuild 라이브러리를 생성한다.
Example에 있는 것 처럼 레포를 하나 생성하고 같은 구조로 파일을 업로드 한다.
Grab 에서 제공하는 라이브러리 사용형태 대로 빌드를 진행해본다
Doing
위 방법대로 실행하기 위해서는 2번 단계가 손이 많이 가기때문에 간단한 파이썬 스크립트를 작성함
스크립트의 동작은 다음과 같다.
스크립트 동작 시나리오
Rome 폴더안에 있는 파일들을 검사하여 라이브러리명.framework 파일들을 라이브러리명 폴더를 생성한 뒤 폴더안에 넣고 그안에 라이브러리명.pod_name 폴더를 만든다.
추후 git push 까지 함. (지금은 필요없다.. 동작 되는지 확인 이후에 추가해도 무방)
Cocoapods Prebuild 란 ? 🔍
framework
로 만드는 과정이 포함되기 떄문이다.Prebuild
하여 사용하는 라이브러리가 나왔다. (https://github.com/CocoaPods/Rome)Grab 에서 만든 Prebuild 관리 라이브러리 🚀
cocoapods-binary-cache
라이브러리 뿐 만 아니라Rome
을 조합해서 사용하여야 한다.gemfile
의존성을 잘 확인해서 작업하는 것이 좋다.Rome
로 미리Prebuild
라이브러리를 생성하고 그것을 이용하여Prebuild
라이브러리만 만들어 놓은 레포를 생성한 뒤에 이용이 가능하다Example 분석 👨🏻💻
GeneratedFrameworks
폴더 안에는Rome
에서 생성된framework
파일들이 라이브러리명으로.zip
압축 되어있으며 그 압축을 풀게되면 형태는 다음과 같다.Manifest.lock 위 파일은 어떻게 생성했을까? 생각을 해보았는데 내용을 보니
Podfile.lock
과 같은 내용이 들어있어서실행 이후에 업데이트된
Podfile.lock
파일을Manifest.lock
이라는 이름으로 업로드 한것 같았다.Problems ?
현재 그랩 레포 설명 상에서는
Rome
을 활용했다 라는 코멘트만 있을뿐 구체적으로 어떤식으로 생성을해서 깃 레포에 올렸는지는 설명이 되어 있지 않아 현재Example
로 올라가있는 결과물 만을 보고 동작을 유추해서 비슷하게 따라하는 방법 밖에는 없기 때문에 고민이 많았다..처음에는 그랩에서 만든 스크립트가 자동으로 깃 레포에
Push
까지 해줄거라 기대했지만, 그런것 같지는 않다. 그렇기 때문에 일단 다음과 같은 시나리오를 생각해보았다.Rome
을 이용해서Prebuild
라이브러리를 생성한다.Example
에 있는 것 처럼 레포를 하나 생성하고 같은 구조로 파일을 업로드 한다.Grab
에서 제공하는 라이브러리 사용형태 대로 빌드를 진행해본다Doing
스크립트 동작 시나리오
Rome
폴더안에 있는 파일들을 검사하여라이브러리명.framework
파일들을라이브러리명
폴더를 생성한 뒤 폴더안에 넣고 그안에라이브러리명.pod_name
폴더를 만든다.스크립트
실행 방법