티스토리 뷰

CS/iOS

[iOS]나만의 Framework만들기!!

Napster 2018. 5. 9. 17:00


Swift - Framework를 만들어서 사용해보자.

> 2018. 5. 9
> swift 4.1
> xcode Version 9.3 (9E145)


 거창하진 않지만 내가만든 혹은 원래 있던 소스를 내 입맛에 맞게 수정하여 사용하고싶을 때가있다. 그리고 그렇게된걸 멋지게 Framework로 합쳐서  관리(?)하고싶을땐 어떻게 해야할까? 많은 글들이 있었지만, 거기에있는 방법으로는 완벽하게 동작하는 것을 구현하지는 못했다. 그래서 이번시간을 통해 내가 경험했던 것들을 공유해보고자 한다.


1. Framework 프로젝트 생성

 익히 잘 알고 계시겠지만, 처음 프로젝트를 생성할때 여러가지 모드들이 있다. 여기서 우리는 다음 그림의 항목을 선택하여 프로젝트를 생성한다.

그림1. Cocoa Touch Framework를 선택한다!


여기서 내가 원하는 기능의 프레임 워크를 알맞게 만든다.


그림 2. 내가 만들고 싶은 기능의 프레임워크를 자유롭게 만든다.


다만 여기서 겪을 수 있는 문제는 다음과 같다. 실제 사용되는 프로젝트에서 나의 프레임 워크를 사용했을때, 분명히 제대로 import했는데 내부의 구조체라던지 함수가 보이지 않는다면 그건 해당 구조체의 공개 여부에 따라 그렇게 보인다. 

즉 보여주고자하는 메소드, 객체 앞에 public이라는 키워드를 삽입해줘야한다. 

어떻게 보면 기본적인 내용이지만, 이렇게 사용해봄으로써 몸으로 느꼇다.


2. 빌드한다! 그리고 바이너리 폴더를 꺼낸다!

성공적인 빌드 후 다른 프로젝트에서 사용하기위해 바이너리 폴더를 찾아서 .framework 를 꺼내온다.


그림3. Products에서 해당 프레임 워크를 선택한다.


그림4. FullPath에서 만들어진 .framework 폴더를 통제로 복사한다!


이렇게만 하면 import LumberJack 이렇게 사용할 수 있는 모듈(?)이 완성된 단계이다. 물론 직접 내가 만들고자하는 앱의 프로젝트에 나의 프레임워크 프로젝트를 추가하여 사용할 수 있지만 그렇게 한다면, Framework화 하는게 아닌것 같아 이렇게 진행하였다.

생각보다 간단하게 Framework를 만들었다.


3. 이제 사용해보자!

 여기서 주의할 사항은 다음과 같다. 기본적인 내용이지만 몰랏기에 헤맸던 부분이기도하다. .framework를 내가 쓰고자하는 프로젝트 폴더에 통째로 복사해야한다.

그리고 꼭 

그림5. Embedded Binarles에 추가해주자!

Targets general항목에서 -> Embedded Binarles에 + 를 눌러 추가해준다!!

여기서는 아까 통째로 복사한 .framework 폴더를 넣어줘야한다. 그래야 사용하는 쪽에서 import 해서 사용해도 없는 모듈이라고 오류가 발생하지 않는다.


결론

 처음엔 Framework로 만들어서 개발하지는 않았다. 솔직히 그저 만들던데로 만들었는데 Framework로 바꾸니 여러가지 이슈가 발생하였다.
우선 public문제가 발생하였다. 내가 사용하고자하는 곳에서 코드를 호출하려하니 없던것이다. 그러니 꼭 키워드를 넣어줘야한다. 기본적인건데 
왜사용하는지 몰랐다. 그리고 생각보다 Framework로 만드는게 쉬웠다. Framework를 적용하기전에 궁금한게 있었다. 
어떻게 중첩으로 모듈들을 추가해서 개발을할까? 라는 점이었는데, 쉽게 해결되었다. CoreData를 적용한다음 개발 후 Framework로 빌드하면 아무 문제가 없기 때문이다.  앞으로 차 후 과정은 CocoaPods까지 등록해서 사용 할 수 있는지에 관한 것이다. 

아직 Xcode의 빌드세팅이라던지, 사용법을 완전히 숙지했다고는 할 수 없다. 이런 기본적인 내용은 직접 부딫혀가면서 배워야하는건지 모르겠다.

(잘못된 내용이 있다면 적극적으로 댓글을 달아주세요 :) 감사합니다.)


Comments