[SPM] 04. SPM 라이브러리 소스 접근 (resources, dependencies 사용)

  [SPM] 04. SPM 라이브러리 소스 접근 (resources, dependencies 사용)


안녕하세요. 물먹고하자 입니다. Swift Package Manager(이하 SPM) 네번째는 저번시간에 이어 라이브러리 접근관련된 내용입니다.

소스접근, 리소스접근, SPM 내 라이브러리 추가하기 사용 이렇게 내용 작성했습니다.

바로 시작!

(오늘도 이미지가 많아요)


  1. 접근제어 


언제나 시작전 메이져급 라이브러리들이 어떻게 구성되었는지 확인해본다! (Alamofire 참조했음.)

접근제어 작성했던 주소 : https://xodhks0113.blogspot.com/2019/10/swift.html

언제나 공부는 했지만 기억나지 않았다.... 실제 프로젝트 사용하면서 workspace 내에서 open 은 사용을 안했는데, 이번에 한번 더 깨닫게 된다 ㅋㅋ... 다음



접근제어 구분 변경


open 으로 변경된 형식에서 정상적으로 접근되는걸 확인 할 수 있다!


  2. 리소스 접근 (resources)



이번에는 asset (이미지), ViewController(+Xib)를 호출하는 테스트를 진행해 보려고 함.
기본생성만 해놓고 (nibName: bundle) 호출 함.


역시나 안됨. bundle 에 해당 nibName 을 찾을 수 없다고 함.


다시 라이브러리로 가고 접근해야하는 resource(임의 제가 만듬) 파일을 하나의 폴더로 묶고


targets > resources 에 해당 폴더명 추가함.


단, bundle: .module 구문이 SPM 내부에서만 사용이 가능해서 생성자로 위와같이 구성해줌.


이후 샘플소스에서 호출시


정상적으로 접근되고 Xib 파일 열림!

  3. SPM 내 라이브러리 추가하기 (dependencies)


#. SPM 내 라이브러리를 추가하려고 하는 가장 큰 이유가 공통 ViewController, Networking 일부를 완전 공통으로 빼서 사용하려고 하는데, Alamofire, SnapKit이 없으면 코드를 옮기는 수준이 아닌 일부 개편하는게 엄청 귀찮아서 이다.


샘플로 SnapKit 라이브러리를 추가해본다.
package > dependencies 의 .package(url:) 구문을 작성해준다.
보통 메이져급 라이브러리는 Git 소스에 어떻게 추가하라고 작성해 놓아서 편했음.


추가하고 나면, 자동으로 다운로드 받아지고, .resolved 파일이 생성된다. 
(아직까지는 정확히 어떤역할 하는지 모르지만, 건들지 않는다.)


아.. import는 또 안됨 뭐지.


dependencies 이후 target의 .product(name:, package:) 추가해주고,
사용하는 라이브러리의 최소 지원 platforms 정보가 있다면, 해당 정보도 추가해줘야한다.



이후 정상적으로 import 됨.


샘플 SnapKit 소스 작성!


기존 프로젝트의 SnapKit 받은 소스를 지우고,
JWLibrary 업데이트 진행


내 Packages 에는 SnapKit이 없는데, 정상적으로 다운로드 받아짐.



마지막 확인 라벨 SnapKit 붙은거 확인

기존 프로젝트의 import SnapKit 도 정상적임.


  마무리

오늘까지의 SPM 테스트로 일단 모듈화 시킬 부분을 간단하게 테스트 하였는데, 아직은 SPM Package내 func은 다 알지는 못하였지만, 어떤 형식으로 사용할 수 있는지도 확인은 한 것 같다. 

다음번은 회사전용 라이브러리 구조 잡아보면서 적용해봐야겠다!


끝.

댓글