header-img
Info :

A. ์ง€ํ–ฅํ•˜๋Š” ๊ฒƒ

  1. third party lib๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” framework๋ฅผ xcframework๋กœ buildํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•จ.
  2. 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๋ฒˆ ํ•ด๊ฒฐ๋ฐฉ์•ˆ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Œ.

  1. xcframework๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด archive ๋นŒ๋“œ ์‹œ -workspace ์˜ต์…˜์„ ์ฃผ์–ด์•ผ ํ•จ. ๋ฐ”๋€ ๋ฐฐ์‹œ์—์„œ ์ˆ˜ํ–‰ํ•ด์•ผ ๋  ์ฝ”๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Œ.
  2. // 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"
  3. code signing์„ ํ•ด์ฃผ์–ด์•ผ ํ•จ. (์ด๊ฑด ์—„๋ฐ€ํžˆ ๋”ฐ์ง€๋ฉด ๋ฐฐํฌ๋œ xcframework๋ฅผ ์„ค์น˜ํ•  ๋•Œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๊ธฐ ์œ„ํ•ด ํ•ด์ค˜์•ผ๋  ๋ถ€๋ถ„์ž„)
  4. pod ์ข…์†์„ฑ ์„ค์น˜ํ•  ๋•Œ dynamic์œผ๋กœ ํ•ด์ฃผ์–ด์•ผ ํ•จ.

 

Z. ๋ ˆํผ๋Ÿฐ์Šค

๋”๋ณด๊ธฐ
CS/iOS, Swift