header-img
Info :
  1. A. pros & cons
  2. B. 전체 과정
  3. C. 각 과정 설명 - 1
  4. D. 각 과정 설명 - 2, 3, 4
  5. E. 각 과정 설명 - 5
  6. F. 각 과정 설명 - 6
  7. G. 각 과정 설명 - 7
  8. H. 각 과정 설명 - 8
  9. I. 각 과정 설명 - 9
  10. J. framework update?
  11. Z. 레퍼런스

A. pros & cons

pros

  1. 빌드된 프레임워크 단위 공유이기 때문에 내부 코드를 악성 유저가 직접 디컴파일 해보지 않는 이상 보안 비교적 높음
  2. static / dynamic framework를 배포하는 쪽에서 강제할 수 있음 (받는 쪽에서 수정할 방법이 없어 보임)
  3. iOS, iOS-simulator 각각 배포해줄 필요가 없음
  4. cocoapod으로는 결과물만 버전 관리해주며 배포하면 되고 실제 개발은 cocoapod으로부터 자유롭기 때문에 좀 더 개발이 간편함
  5. cocoapod을 사용하지 않는 연동 앱사에 framework만 건내줄 때엔 가장 간편함. 왜냐면 xcframework를 배포하는 것이기 때문에 repository 접근만 되면 직접 다운받아서 추가해주면 됨.

cons

  1. private repository를 사용할 시 SDK 사용할 측을 직접 권한 추가해주어야 함. (public repository로 xcframework를 공유하는 방법을 채택한다면 없어질 문제)
  2. 프레임워크를 받아서 악성 유저가 직접 디컴파일하면 내부 코드가 보일 것임

 

B. 전체 과정

  1. 총 관리할 private remote repository bitbucket에 하나 생성
  2. xcode의 framework project 하나 생성
  3. 2번의 프레임워크 코드 수정
  4. cmd 창에서 2번 프로젝트의 디렉토리에서 xcarchive, xcframework 차례로 빌드
  5. git으로 관리할, 1번에서 생성한 repository 관리할 폴더 하나 생성
  6. 5번에서 생성한 폴더에 4번에서 만든 xcframework 폴더 복사, 붙여넣기 해주기
  7. 5번에서 만든 폴더에서 .podspec 파일 만들고 내용 수정해주기
  8. 5번에서 만든 폴더 git init 해준 후 1번의 repository에 push
  9. 테스트 프로젝트에서 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 관리할 폴더 하나 생성

  1. 원하는 위치에서 cmd open
  2. mkdir 디렉토리명

 

F. 각 과정 설명 - 6

5번에서 생성한 폴더에 4번에서 만든 xcframework 폴더 복사, 붙여넣기 해주기

하면 됨

 

G. 각 과정 설명 - 7

5번에서 만든 폴더에서 .podspec 파일 만들고 내용 수정해주기

// cmd
touch [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 init
git remote add origin [1번에서_만든_private_repository_주소]
git status // 파일 상태 보려고 한 것. 생략해도 됨
git add .
git commit -m "커밋 메시지"
git tag 버전명 // ex. git tag 0.1.0
git push origin master tag 버전명

 

I. 각 과정 설명 - 9

테스트 프로젝트에서 pod init 해준 후 .podfile에 종속성 추가해준 후 pod update 후 테스트!

  1. 테스트 프로젝트 만들기
  2. 프로젝트 위치에서 cmd open
  3. pod init
  4. 3번 명령어로 만들어진 .podfile open
  5. podfile에 다음 코드 추가 pod '프레임워크명', :git => "remote_주소", :tag => '버전명'
  6. 2번의 cmd에서 pod update
  7. 완료

 

J. framework update?

프레임워크 내부 코드를 바꿔서 새로운 버전으로 릴리즈할 필요가 생긴다면 다음과 같은 과정을 거치면 됨.

  1. 프레임워크 코드 수정
  2. xcarchive, xcframework로 빌드
  3. xcframework 폴더 다시 git 관리되는 폴더로 복붙 (이전 xcframework 폴더는 삭제)
  4. .podspec 파일의 버전 바꿔주기
  5. cmd 창에서 아래 명령어 수행
  6. git status // 파일 상태 보려고 한 것. 생략해도 됨 git add . git commit -m "커밋 메시지" git tag 버전명 // ex. git tag 1.0.4 git push origin master tag 버전명
  7. 테스트 프로젝트의 .podfile에서도 tag 뒤 버전 수정
  8. 테스트 프로젝트 위치에서 cmd open, pod update 명령어 실행

7번 과정이 귀찮다면 워크스페이스 방식 사용. 단 새로운 프로젝트에 이식해보는 테스트는 꼭 필요함.

 

Z. 레퍼런스

'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
더보기
CS/iOS, Swift