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 ํ์ผ ๋ง๋ค๊ณ ๋ด์ฉ ์์ ํด์ฃผ๊ธฐ
// 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 ํ ํ ์คํธ!
- ํ ์คํธ ํ๋ก์ ํธ ๋ง๋ค๊ธฐ
- ํ๋ก์ ํธ ์์น์์ 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 |