header-img
Info :
  1. A. 지향하는 것
  2. B. 해결방안
  3. Z. 레퍼런스

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