4월, 2021의 게시물 표시

[SPM] 05. SPM Private Git(GitLab), 폴더구조 변경 (회사 사용용도)

이미지
  [SPM] 05. SPM Private Git, 폴더구조 변경 (회사 사용용도) 안녕하세요. 물먹고하자 입니다. Swift Package Manager(이하 SPM) 다섯번째 시간은 드디어 대망의 회사에서 사용하려는 Private Git 과 폴더 구조 변경입니다. 바로 시작해 보겠습니다.    샘플소스 회사 전용 Git 서버는 GitLab 으로 구성되어있음. 앞선 SPM 구성하는 형식과 동일하게 프로젝트까지 생성 GitLab에 Release 가 없어서 Tag로 발행 (이건 다른곳도 차이 있는지 모르겠음) #. GitHub에는 Release 존재함. 간단하게 첫번째 Tag 발행 성공!! 바로 프로젝트에서 SPM 연동작업 문제없이 다운로드까지 됨!! (여기까진 연결, Tag 발행 완료) 앞선 테스트에서는 폴더 구조를 신경쓰진 않았지만,  회사 공통모듈로 개발시 양이 많아질 걸 고려해서  폴더구조로 구분짓는게 좋다고 판단함. 폴더 구조를 변경하고 Target의 path 정보를 명시적으로 작성해줌. #. 이부분에서 삽질을 많이 했는데, Alamofire, Hero, SanpKit 등  메이져급 라이브러리 참조해서 비슷하게 구조 잡음. 폴더 구조또한 정상적으로 접근잘됨.    번외 태그 발행하기. 매번 웹페이지에서 태그를 발행하는게 귀찮았는데, Source Tree 연동해서 커밋된 내용을 Tag 발행할 수 있음. 이렇게 하고 업데이트 해도 정상! 두번째 방법은 개발 당시 정식 Tag를 발행하면, 다른 프로젝트에 영향이 갈 수 있으므로 특정 커밋본을 바라보게 업데이트 할 수 있음. 커밋ID 복사! 웹에서는 해당 위치에 커밋ID 복사버튼 있음. 라이브러리에 [Commit] 란을 선택하고 업데이트 하면 해당 버전으로 SPM 을 바라볼 수 있음.   마무리 지금까지 이부분을 도입하려고 달려왔는데, 결과적으론 생각했던 부분이 전부다 되는 걸 입증한 것 같아서 기분이 좋습니다! 분명히 파일들이 늘어나고 리소스 관리를 하다보면, 생각지 못한 부분이 발생은 할 것 같은데, 공

[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 이 없으면 코드

[SPM] 03. SPM 직접 등록 및 업데이트

이미지
  [SPM] 03. SPM 직접 등록 및 업데이트 안녕하세요. 물먹고하자 입니다. Swift Package Manager(이하 SPM) 세번째로 직접 SPM 등록 후 사용하는 방법 입니다! 처음하다보니 중간에 실패사례도 있는데, 공유하기 좋을것 같아서 같이 올렸습니다. 바로 시작! (오늘은 이미지가 많아요)   샘플소스 Xcode > File > New 를 통해 Swift Package 생성! 처음 생성하고나면 기본으로 생성되는 부분 입니다 나머지 부분은 테스트로 사용해볼 프로토콜, Util 성 클래스 생성함. 일단 사용을 위해서 Git에 올림 #. 주의점 : 이미지 처럼 Package.swift 파일이 폴더 내에 들어가 있으면, 다운로드 받은때 오류납니다. (뒷 부분 수정내용 참조) 삽질 끝에 1.0.1 릴리즈 추가 (1.0.0 은 실패함..ㅋㅋ) 일단 추가 SPM 에서 해당 Git 소스 추가 (Next) 버전도 정상으로 확인! (1.0.1 Next) ....?! 여기서 삽질좀 했는데, 위에서 한번 언급했듯이 Package.swift 파일을 찾지 못해서 나는 오류 임. Git 프로젝트 수정!! 다시 릴리즈 하고 .... (1.1.0 으로 변경함) 다시 다운로드 (1.1.0) 성공!! SPM에 해당 내용 잘 가져와짐 import 정상 Class는 Public 을 안써놔서 접근 안됨. 다운받은곳에서는 수정이 안되니, 라이브러리 소스로 ㄱㄱ class -> public class 로 변경 릴리즈 추가 (1.1.1) 그냥 실행하면 최신받아지는건 아니네요 SPM 부분에서 더블클릭해서 해당 버전으로 업데이트 최신 버전 내용 확인! ???? 어?? Class 까지는 접근되는데, 함수는 또 접근이 안되네 싱글턴 사용 방식 틀린것도 아닌데.. Class Func 추가!! 어....??? 뭐지 이것도 접근이 안되나??   마무리 오늘은 작업하면서 생각보다 SPM 등록 및 업데이트 는 어렵지 않았는데, 생각지도 못한 싱글턴 객체를 접근하지 못하는 일이