A. ์งํฅํ๋ ๊ฒ
- third party lib๋ฅผ ์ฌ์ฉํ๊ณ ์๋ framework๋ฅผ xcframework๋ก buildํ ์ ์์ด์ผ ํจ.
- cocoapod์ ๋ฐฐํฌํ ๋ ์ด xcframework๊ฐ ์์กดํ๊ณ ์๋ ์ข ์์ฑ๋ค์ ์๋์ผ๋ก ์ค์นํ ์ ์์ด์ผ ํจ.
B. ํด๊ฒฐ๋ฐฉ์
2๋ฒ์ ๋๋ฌด ์ฌ์ ์. ๋ฐฐํฌํ ํ๋ ์์ํฌ์ podspec์ ์๋์ ๊ฐ์ด ์์ฑํ๋ฉด ๋จ.
Pod::Spec.new do |s|
s.name = "SampleFramework"
s.version = "0.1.5"
s.summary = "A brief description of XCFrameworkTest project."
s.description = <<-DESC
An extended description of XCFrameworkTest project.
DESC
s.homepage = "<https://github.com/์ ์ ๋ช
>"
s.license = { :type => 'Copyright', :text => <<-LICENSE
Copyright 2018
Permission is granted to...
LICENSE
}
s.author = { '์ด๋ฆ' => '์ด๋ฉ์ผ' }
s.source = { :git => "๊น ์ฃผ์", :tag => s.version.to_s }
s.vendored_frameworks = "SampleFramework.xcframework"
s.dependency 'Alamofire'
s.platform = :ios
s.swift_version = "4.2"
s.ios.deployment_target = '13.0'
s.frameworks = 'UIKit', 'Foundation'
s.static_framework = true
end
๊ธฐ์กด๊ณผ ๋ฌ๋ผ์ง ์ ์ ๋ค์๊ณผ ๊ฐ์
- s.dependency 'Alamofire' : ์ด ํ๋ ์์ํฌ๊ฐ ์์กดํ๊ณ ์๋ ์ข ์์ฑ์ ์ด ๊ณณ์ ์์ฑํด์ฃผ๋ฉด ๋จ.
- s.frameworks = 'UIKit', 'Foundation' : ํ์คํ๊ฒ ํ์ํ์ง ๋ชจ๋ฆ
- s.static_framework = true : ํ์คํ๊ฒ ํ์ํ์ง ๋ชจ๋ฆ
1๋ฒ ํด๊ฒฐ๋ฐฉ์์ ๋ค์๊ณผ ๊ฐ์.
- xcframework๋ฅผ ๋ง๋ค๊ธฐ ์ํด archive ๋น๋ ์ -workspace ์ต์ ์ ์ฃผ์ด์ผ ํจ. ๋ฐ๋ ๋ฐฐ์์์ ์ํํด์ผ ๋ ์ฝ๋๋ ์๋์ ๊ฐ์.
- // simulator xcodebuild archive -scheme SampleFramework \\ -workspace SampleFramework.xcworkspace \\ -destination "generic/platform=iOS Simulator" \\ -archivePath './build/iphone-simulator.xcarchive' \\ -sdk iphonesimulator \\ VALID_ARCHS="i386 x86_64" \\ SKIP_INSTALL=NO \\ BUILD_LIBRARY_FOR_DISTRIBUTION=YES // iphone os xcodebuild archive -scheme SampleFramework \\ -workspace SampleFramework.xcworkspace \\ -destination "generic/platform=iOS" \\ -archivePath './build/iphone.xcarchive' \\ -sdk iphoneos \\ SKIP_INSTALL=NO \\ BUILD_LIBRARY_FOR_DISTRIBUTION=YES // xcframework xcodebuild -create-xcframework \\ -framework "./build/iphone.xcarchive/Products/Library/Frameworks/SampleFramework.framework" \\ -framework "./build/iphone-simulator.xcarchive/Products/Library/Frameworks/SampleFramework.framework" \\ -output "./SampleFramework.xcframework"
- code signing์ ํด์ฃผ์ด์ผ ํจ. (์ด๊ฑด ์๋ฐํ ๋ฐ์ง๋ฉด ๋ฐฐํฌ๋ xcframework๋ฅผ ์ค์นํ ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์๊ธฐ ์ํด ํด์ค์ผ๋ ๋ถ๋ถ์)
- pod ์ข ์์ฑ ์ค์นํ ๋ dynamic์ผ๋ก ํด์ฃผ์ด์ผ ํจ.
Z. ๋ ํผ๋ฐ์ค
- Issue with third party dependencies inside a XCFramework through SPM
- nam-sdk-ios/NAMSDK.podspec at main · naver/nam-sdk-ios → NAMSDK podspec. dependency, framework ์ฐธ๊ณ . xcframework
- Specs/KakaoSDKCommon.podspec.json at master · CocoaPods/Specs → KakaoSDK podspec. dependency ์ค์ ๋ก alamofire ์ฌ์ฉํ๊ณ ์๋ ๊ฒ ์ฐธ๊ณ .
- Specs/KakaoOpenSDK.podspec.json at master · CocoaPods/Specs → KakaoSDK podspec.
- Kakao Developers → KakaoSDK guide
- Generate framework with grpc-swift fails · Issue #1391 · grpc/grpc-swift → workspace ์ต์ ๋ฃ์ด์ผ ๋๋ ๊ฒ ์ฐธ๊ณ
- Specs/Alamofire.podspec.json at master · CocoaPods/Specs → Alamofire podspec.
'CS > iOS, Swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[iOS] Framework, Library RnD (0) | 2023.04.07 |
---|---|
[iOS] static framework to xcframework, cocoapod ๋ฐฐํฌ (0) | 2023.04.07 |
[iOS] 1st party framework์์ 3rd party framework ์ฌ์ฉ (0) | 2023.04.07 |
[iOS] Framework์ ์ข ์์ฑ ์ถ๊ฐ ์ ์์ ํ๊ฒฝ ์ธํ (0) | 2023.04.06 |
[iOS] framework ์์ ํ๊ฒฝ ๋ง๋ค๊ธฐ (0) | 2023.04.06 |