Cocoapods ์ด๋?
์ ํ ๊ด๋ จ ํ๋ก๊ทธ๋จ(Swift, Objective-C)์ ์์ฑํ ๋ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ๋์์ฃผ๋ ์์กด์ฑ ๊ด๋ฆฌ๋๊ตฌ์ ๋๋ค.
ํ์ฌ 3๋ฐฑ๋ง๊ฐ๊ฐ ๋๋ ์ฑ์์ ์ฌ์ฉ์ค์ธ ๋๊ตฌ์ ๋๋ค.
์ค์น๋ฐฉ๋ฒ
์ ๋ ์ฌ์ฉํ๊ณ ์๋ MacOS์ Xcode๊ฐ ์ต์ ๋ฒ์ ์ด ์๋๋ผ์์ธ์ง ์ค์น๊ณผ์ ์ ๋ฌธ์ ๊ฐ ์๊ฒจ์ ์๋์ ๊ฐ์ ๊ณผ์ ์ ํตํด ์ต์ข ์ ์ผ๋ก ์ค์นํ ์ ์์์ต๋๋ค. ํ์ฌ ์ ๋ MacOS Big Sur 11.3.1, Xcode 13.1 ์ ์ฌ์ฉ์ค์ ์์ต๋๋ค.
1. ํฐ๋ฏธ๋์์ ์ค์นํ๊ธฐ
$ sudo gem install cocoapods
ํฐ๋ฏธ๋์์ ์ ๋ช ๋ น์ด๋ฅผ ์ด์ฉํ์ฌ ์ค์นํ ์ ์์ต๋๋ค. ์ ์ ๊ฒฝ์ฐ extconf faild, exit code 1๊ณผ ๊ฐ์ ๋ฉ์์ง๊ฐ ๋จ๋ฉด์ ์ค์น๋ฅผ ์คํจํ์๋๋ฐ์.
2. Homebrew์์ ์ค์นํ๊ธฐ
Homebrew๋ฅผ ์ด์ฉํ์ฌ ์ค์น๊ฐ ๊ฐ๋ฅํ๋ค๊ณ ํ์ฌ ํฐ๋ฏธ๋์์ HOMEBREW ์ฐฝ์ ์๋ก ์ด์ด์ ์๋ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ์์ต๋๋ค.
$ brew install cocoapods
๋ง์ฝ, Homebrew๊ฐ ์๋ค๋ฉด ํฐ๋ฏธ๋์์ ์๋ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ์ฌ ์ค์นํ ์ ์์ต๋๋ค.
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
๋ ์์ธํ ๋ด์ฉ์ ์๋ ๊ณต์ํํ์ด์ง์์ ํ์ธํ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ์ ๋ Homebrew์์๋ ์๋์ ๊ฐ์ ์ค์น์๋ฌ๊ฐ ๋ฐ์ํ์์ต๋๋ค.
3. Homebrew์์ ์ด์ ๋ฒ์ ๋ช ์ํ์ฌ ์ค์น
$ sudo gem install -n /usr/local/bin cocoapods -v 1.8.4
-V ๋ฅผ ์ด์ฉํ์ฌ Cocoapods 1.8.4 ๋ฒ์ ์ ์ค์นํ์์ต๋๋ค. ์ต์ ๋ฒ์ ์ด ์๋๊ธฐ ๋๋ฌธ์ ๋ฒ์ ์ ์ ๊ทธ๋ ์ด๋ํ๋ผ๋ ์๋ด๋ฌธ๊ตฌ๊ฐ ๋จ์ง๋ง ๋ฌด์ํ๊ณ ์ฌ์ฉํด๋ ๋ฉ๋๋ค. ๋๋์ด ์ค๋ฅ์์ด ์ค์นํ ์ ์์์ต๋๋ค.
์๋ ์ ํ ๊ฐ๋ฐ์ ํฌ๋ผ์ ์ค๋ ๋๋ฅผ ์ฐธ๊ณ ํ์์ต๋๋ค.
https://developer.apple.com/forums/thread/668456
4. ์ค์น์ฌ๋ถ ํ์ธ
pod --version
์ ๋ช ๋ น์ด๋ฅผ ํฐ๋ฏธ๋์์ ์ ๋ ฅํ์ฌ ์ค์น์ฌ๋ถ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
Cocoapods ์ฌ์ฉ๋ฐฉ๋ฒ
1. ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ์์ pod init
๋จผ์ xcode๋ก ํ๋ก์ ํธ๋ฅผ ๋ง๋ ํ ์ข ๋ฃํ ๋ค์, ํฐ๋ฏธ๋์์ ํด๋น ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ๊ฒฝ๋ก๋ก ์ด๋ํ ํ $ pod init ๋ช ๋ น์ด๋ฅผ ์ด์ฉํ์ฌ ํด๋น xcode ํ๋ก์ ํธ์ Cocoapods๋ฅผ ์ธํ ํด์ค๋๋ค.
$ cd {ํ๋ก์ ํธ๊ฒฝ๋ก}
$ pod init
initialise ๊ฐ ์๋๋ฉด ์๋์ฒ๋ผ ํ๋ก์ ํธ ํด๋์ Podfile์ด ์๊ธด ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
์ด Podfile ์ ์ด์ฉํ์ฌ ์ธ๋ถ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ๋ก์ ํธ์ ์ถ๊ฐํ๊ณ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
๋๋, Podfile ์ด๋ผ๋ ์ด๋ฆ์ ํ ์คํธํ์ผ์ ์ถ๊ฐํ๊ณ ์๋ ๋ด์ฉ์ ์ ๋ ฅํ์ฌ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด ๋ ํ๋ซํผ ๋ฑ์ ๋ฒ์ ์ ์ฌ์ฉํ๊ณ ์๋ ํ๋ก์ ํธ ํ๊ฒฝ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง ์ ์์ต๋๋ค.
platform :ios, '8.0'
use_frameworks!
target 'MyApp' do
pod 'AFNetworking', '~> 2.6'
pod 'ORStackView', '~> 3.0'
pod 'SwiftyJSON', '~> 2.3'
end
2. Podfile ์์ ํ๊ธฐ
use_frameworks! ์๋์, ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ๋ ฅํ์ฌ ์ถ๊ฐํ๋ฉด ๋ฉ๋๋ค.
pod '๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ฆ','๋ฒ์ ๋ช
'
์ฌ์ฉํ๊ณ ์ ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ณต์ํํ์ด์ง์์๋ Cocoapods์์์ ์ด์ฉ๋ฐฉ๋ฒ์ ๋ช ์ํด๋๊ณ ์์ต๋๋ค. ์๋๋ ๋คํธ์ํฌ ํต์ ์ ์ฌ์ฉํ๋ ํ๋ ์์ํฌ์ธ Alamofire ์ Cocoapods ์ฌ์ฉ๋ฐฉ๋ฒ์ ์บก์ณํ ์ด๋ฏธ์ง์ ๋๋ค.
์ ์ ๊ฒฝ์ฐ ํด๋น ํ๋ก์ ํธ์ Alamofire์ Charts ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ณ ์ถ์ผ๋ฏ๋ก ์๋์ ๊ฐ์ด Podfile์ ์ ์ฅ ํ ์ข ๋ฃํ์์ต๋๋ค.
3. Podfile ์ ์ฅ ํ pod ์ค์น
์๊น ์ผ๋ ํฐ๋ฏธ๋์ฐฝ์์ ์๋ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํฉ๋๋ค.
$ pod install
์ค์น๊ฐ ์๋ฃ๋๋ฉด ์๋์ ๊ฐ์ด ๋น๋๋ค. Downloading Dependencies, Installing {LibraryName} (version) ์ ๊ฑฐ์ณ, Generating Pods project, Integrating client project๊น์ง ๋จ๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
4. ์ด์ ๋ถํฐ๋ xcworkspace๋ฅผ ์ด์ฉํ๊ธฐ
์์ pod install์ด ์ ๋๋ก ์๋ฃ๋๋ฉด ํด๋น ํ๋ก์ ํธ ํด๋์ *.xcworkspace๊ฐ ์๋ก ์์ฑ๋๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค. ์๋ก ์ค์นํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ๊ธฐ์กด์ *.xcodeproj ๊ฐ ์๋๋ผ xcworkspace ํ์ฅ์๋ฅผ ๊ฐ์ง ํ์ผ์ ์คํํด์ผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
$ open App.xcworkspace
*.xcworkspace ๋ฅผ ์ด๋ฉด ์๋์ฒ๋ผ Pods ํ๋ก์ ํธ๊ฐ ์๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
์ด์ Pods ๋ด์์ ๋ชจ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
๋ง์น๋ฉฐ
์ค๋๋ ์ฝ์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
๊ถ๊ธํ ์ ์ด ์๋ค๋ฉด ๋๊ธ๋ก, ๋์์ด ๋์ จ๋ค๋ฉด ๊ณต๊ฐ ๋ถํ๋๋ฆฝ๋๋ค.
ํน์ ํผ๋๋ฐฑํ์ค ๋ด์ฉ ์๋ค๋ฉด ์ธ์ ๋ ๋๊ธ๋ก ๋ถํ๋๋ฆฝ๋๋ค.
๊ฐ์ฌํฉ๋๋ค.
๋๊ธ