A. pros & cons
pros
- 빌드된 프레임워크 단위 공유이기 때문에 내부 코드를 악성 유저가 직접 디컴파일 해보지 않는 이상 보안 비교적 높음
- static / dynamic framework를 배포하는 쪽에서 강제할 수 있음 (받는 쪽에서 수정할 방법이 없어 보임)
- iOS, iOS-simulator 각각 배포해줄 필요가 없음
- cocoapod으로는 결과물만 버전 관리해주며 배포하면 되고 실제 개발은 cocoapod으로부터 자유롭기 때문에 좀 더 개발이 간편함
- cocoapod을 사용하지 않는 연동 앱사에 framework만 건내줄 때엔 가장 간편함. 왜냐면 xcframework를 배포하는 것이기 때문에 repository 접근만 되면 직접 다운받아서 추가해주면 됨.
cons
- private repository를 사용할 시 SDK 사용할 측을 직접 권한 추가해주어야 함. (public repository로 xcframework를 공유하는 방법을 채택한다면 없어질 문제)
- 프레임워크를 받아서 악성 유저가 직접 디컴파일하면 내부 코드가 보일 것임
B. 전체 과정
- 총 관리할 private remote repository bitbucket에 하나 생성
- xcode의 framework project 하나 생성
- 2번의 프레임워크 코드 수정
- cmd 창에서 2번 프로젝트의 디렉토리에서 xcarchive, xcframework 차례로 빌드
- git으로 관리할, 1번에서 생성한 repository 관리할 폴더 하나 생성
- 5번에서 생성한 폴더에 4번에서 만든 xcframework 폴더 복사, 붙여넣기 해주기
- 5번에서 만든 폴더에서 .podspec 파일 만들고 내용 수정해주기
- 5번에서 만든 폴더 git init 해준 후 1번의 repository에 push
- 테스트 프로젝트에서 pod init 해준 후 .podfile에 종속성 추가해준 후 pod update 후 테스트!
C. 각 과정 설명 - 1
총 관리할 private remote repository bitbucket에 하나 생성
그냥 bitbucket에 private으로 repository 하나 생성해주면 됨.
D. 각 과정 설명 - 2, 3, 4
xcode의 framework project 하나 생성2번의 프레임워크 코드 수정
cmd 창에서 2번 프로젝트의 디렉토리에서 xcarchive, xcframework 차례로 빌드
하면 됨
E. 각 과정 설명 - 5
git으로 관리할, 1번에서 생성한 repository 관리할 폴더 하나 생성
- 원하는 위치에서 cmd open
- mkdir 디렉토리명
F. 각 과정 설명 - 6
5번에서 생성한 폴더에 4번에서 만든 xcframework 폴더 복사, 붙여넣기 해주기
하면 됨
G. 각 과정 설명 - 7
5번에서 만든 폴더에서 .podspec 파일 만들고 내용 수정해주기
// cmdtouch [framework_이름].podspec
.podspec 파일 열고 아래 부분 기입해서 저장 (일반 소스코드를 pod으로 공유하는 것과 podspec 내용이 조금 다름)
Pod::Spec.new do |s| s.name = "프레임워크명" s.version = "버전_정보" s.summary = "프레임워크_요약" s.description = <<-DESC 프레임워크_상세_설명 DESC s.homepage = "홈페이지_주소" s.license = { :type => 'Copyright', :text => <<-LICENSE Copyright 2018 Permission is granted to... LICENSE } s.author = { '이름' => 'git_mail' } s.source = { :git => "1번에서_만든_remote_repo_주소", :tag => s.version.to_s } s.vendored_frameworks = "프레임워크명.xcframework" s.platform = :ios s.swift_version = "스위프트_버전" s.ios.deployment_target = 'target_iOS_버전'end
H. 각 과정 설명 - 8
5번에서 만든 폴더 git init 해준 후 1번의 repository에 push
5번에서 만든 폴더에서 cmd open. 이 폴더 안에는 프레임워크 폴더와 .podspec 파일이 들어있어야 함.
git initgit remote add origin [1번에서_만든_private_repository_주소]git status // 파일 상태 보려고 한 것. 생략해도 됨git add .git commit -m "커밋 메시지"git tag 버전명 // ex. git tag 0.1.0git push origin master tag 버전명
I. 각 과정 설명 - 9
테스트 프로젝트에서 pod init 해준 후 .podfile에 종속성 추가해준 후 pod update 후 테스트!
- 테스트 프로젝트 만들기
- 프로젝트 위치에서 cmd open
- pod init
- 3번 명령어로 만들어진 .podfile open
- podfile에 다음 코드 추가 pod '프레임워크명', :git => "remote_주소", :tag => '버전명'
- 2번의 cmd에서 pod update
- 완료
J. framework update?
프레임워크 내부 코드를 바꿔서 새로운 버전으로 릴리즈할 필요가 생긴다면 다음과 같은 과정을 거치면 됨.
- 프레임워크 코드 수정
- xcarchive, xcframework로 빌드
- xcframework 폴더 다시 git 관리되는 폴더로 복붙 (이전 xcframework 폴더는 삭제)
- .podspec 파일의 버전 바꿔주기
- cmd 창에서 아래 명령어 수행
- git status // 파일 상태 보려고 한 것. 생략해도 됨 git add . git commit -m "커밋 메시지" git tag 버전명 // ex. git tag 1.0.4 git push origin master tag 버전명
- 테스트 프로젝트의 .podfile에서도 tag 뒤 버전 수정
- 테스트 프로젝트 위치에서 cmd open, pod update 명령어 실행
7번 과정이 귀찮다면 워크스페이스 방식 사용. 단 새로운 프로젝트에 이식해보는 테스트는 꼭 필요함.
Z. 레퍼런스
- CoCoaPods Private 배포하기
- Distributing compiled universal iOS static libraries as XCFrameworks via Cocoapods
- How to publish a Framework or XCFramework on Cocoapods.
- CocoaPods.org
- GitHub - naver/nam-sdk-ios // 이 방식이 최종적으로 지향하는 SDK 구조임
- How to hide implementation of Cocoapods | Swift // 파일 공유하는 cocoapod이지만 실행 안 됨
'CS > iOS, Swift' 카테고리의 다른 글
[iOS] framework 작업환경 만들기 (0) | 2023.04.06 |
---|---|
[iOS] XCFramework build script (0) | 2023.04.06 |
[iOS] Private Repository에 CocoaPod Framework 올리기 (0) | 2023.04.06 |
[iOS] framework 기본 (0) | 2023.02.14 |
[iOS] xcode, bitbucket 연동 (0) | 2023.02.14 |