[ios] CocoaPods에서 use_frameworks를 사용하는 이유는 무엇입니까?

use_frameworksCocoaPods에서 Podfile여러 번 사용 했습니다 . 왜 우리가 그것을 사용하는지 궁금합니다. 나는 그것에 대한 직접적인 대답을 얻지 못했습니다.

예:

platform :ios, '8.0'
use_frameworks!

target "CityWhether" do
    pod 'Alamofire'
    pod 'SwiftyJSON'
end



답변

use_frameworksCocoaPods에 정적 라이브러리 대신 프레임 워크를 사용하려고 함을 알립니다. Swift는 Static Libraries를 지원하지 않으므로 프레임 워크를 사용해야합니다.


또 다른 답변에서 정적 라이브러리와 프레임 워크의 차이점을 설명했습니다.

Cocoa Touch 프레임 워크

항상 오픈 소스이며 앱과 같이 빌드됩니다. (따라서 Xcode는 앱을 실행할 때 그리고 항상 프로젝트를 정리 한 후에 컴파일합니다.) 프레임 워크는 iOS 8 이상 만 지원하지만 프레임 워크에서 Swift 및 Objective-C를 사용할 수 있습니다.

Cocoa Touch 정적 라이브러리

이름에서 알 수 있듯이 정적입니다. 따라서 프로젝트로 가져올 때 이미 컴파일 된 것입니다. 코드를 보여주지 않고도 다른 사람과 공유 할 수 있습니다. 현재 정적 라이브러리는 Swift를 지원하지 않습니다. 라이브러리 내에서 Objective-C를 사용해야합니다. 앱 자체는 여전히 Swift로 작성할 수 있습니다.

출처 : 내 다른 답변 | AddThis.com 블로그


답변

use_frameworks!은 코코아 포드에 동적 라이브러리를 사용하도록 지시하고, 특히 정적 라이브러리를 지원하지 않는 신속한 처리로 인해 한때 매우 널리 퍼졌습니다. 즉, 선택의 여지가 없었지만 더 이상 필요 하지 않은 경우 많습니다 use_frameworks!.

Xcode 9 베타 4 및 CocoaPods 1.5.0부터는 신속한 정적 라이브러리가 지원됩니다. 가장 큰 장점은 특히 포드가 많은 경우 앱 시작 시간이 더 빠르다는 것입니다. iOS 10 및 11은 dylib가 많을 때 가장 빠르지 않습니다.

CocoaPods 1.5.0은 2018 년 4 월 초에 출시 되었으므로 업그레이드해야 할 수 있습니다 sudo gem install cocoapods.

아직 정적 라이브러리에서 제대로 작동하지 않는 포드를 여러 개 찾았으므로 마일리지가 다를 수 있습니다.


답변

use_frameworks정적 라이브러리 대신 동적 프레임 워크 를 사용할 것임을 선언합니다 .

Xcode 9.0 및 CocoaPods 1.5.0이 출시 된 상태에서 .NET을 사용하지 않으면 swift에서 정적 라이브러리를 사용할 수 있습니다 use_frameworks.

한 가지 문제 use_frameworks는 포드 / 제품의 모든 프레임 워크가 프레임 워크라는 것입니다.

관련 기사 : iOS의 정적 및 동적 프레임 워크에 대한 기본 개요


답변

Cocoapod의 [About] use_frameworks! 은 바이너리 유형을 담당합니다.

  • 경우가 use_frameworks!있다 현재dynamic framework
  • 경우가 use_frameworks!있다 존재하지static library

use_frameworks!프로젝트 의 해당 대상 에서 Mach-O Type[정보] 에 반영됩니다 Pods.

타임 라인 :

  1. use_frameworks!Swift pod에 사용해야하는 CocoaPods 0.36 도입
  2. CocoaPods 1.5.0 및 Xcode 9를 사용하면 선택할 수 있습니다.

[어휘]


답변

첨가

use_frameworks!

Podfile에서는 나열된 프레임 워크가 정적 프레임 워크 대신 동적으로 설치되기를 원한다는 의미입니다.


답변