Embedded Framework를 도입하는 방법
5790 단어 iOSSwiftObjective-C아이폰Xcode
개요
Embedded Framework의 도입 방법이나 빠진 곳에 대해 정리했습니다
Embedded Framework란?
Embedded Framework는 iOS 8, Xcode 6에서 추가된 기능입니다.
앱 코드를 분할하여 Framework로 처리할 수 있습니다.
Embedded Framework를 도입하는 이점
코드를 분할하고 Framework화하면 다음과 같은 이점이 있습니다.
Embedded Framework는 iOS 8, Xcode 6에서 추가된 기능입니다.
앱 코드를 분할하여 Framework로 처리할 수 있습니다.
Embedded Framework를 도입하는 이점
코드를 분할하고 Framework화하면 다음과 같은 이점이 있습니다.
도입 방법
Xcode 7.3.2 Swift 2.2에서의 도입 방법입니다.
Framework를 만드는 방법
Embedded Framework의 도입은 간단하고, Xcode의 툴바로부터 「File」→「New」→「Target」을 선택하면, 이하의 화면이 표시됩니다.
거기에서 "Framework & Library"→ "Cocoa Touch Framework"를 선택하면 새로운 타겟이 추가됩니다.
새로 만든 Target으로 나누고 싶은 코드를 추가해 갑니다.
Framework 사용법
Framework로서 취급하는 메소드나 class, 변수에는 메인 타겟으로부터 액세스 할 수 있도록 public
수식자를 붙여 주세요.
import Foundation
import Alamofire
public class Util {
public var name: String?
public init() {
}
}
사용하고 싶은 Framework를 import하는 것만으로 사용할 수 있게 됩니다.
import UIKit
import SampleFramework
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let util = Util()
util.name = "hoge"
}
}
Embedded Framework의 도입은 매우 간단합니다.
그러나 Framework 내에서 라이브러리를 사용하는 경우는 여러가지 빠지는 부분이 있었습니다.
그 대응 방법을 몇 가지 소개하고 싶습니다.
CocoaPods에서 라이브러리를 사용하는 경우
Embedded Framework에서만 사용하는 라이브러리에서도 기본 대상에도 설치해야 합니다.
Podfile에 대상마다 동일한 라이브러리 이름을 작성하는 것은 번거롭기 때문에, iQON에서는 abstract_target
로 정리하고 있습니다.
// Podfile
abstract_target 'All' do # Targetとかぶらなければ、名前の文字列は何でも大丈夫です
pod 'Alamofire'
target 'SampleApp' do # AlamofireとSVProgressHUDがインストールされる
pod 'SVProgressHUD'
end
target 'SampleFramework' do # Alamofireがインストールされる
end
end
Carthage에서 라이브러리를 사용하는 경우
Carthage도 CocoaPods와 마찬가지로 Framework와 기본 대상 모두에 라이브러리를 설정해야합니다.
메인 타겟의 Embedded Binaries
에 Framework에서 이용하고 있는 라이브러리를 설정합니다.
Library not loaded에서 충돌하는 경우
CocoaPods로 설치한 라이브러리가 Library not loaded
로 크래쉬 해 버릴 때는 「Build Phases」를 확인해 보세요.
아마도 설치된 라이브러리를 앱에 통합하기 위한 Run Script가 없기 때문에 충돌이 있을 수 있습니다.[CP] Embed Pods Frameworks
라는 Run Script 는 본래 CocoaPods 가 자동적으로 추가하는 것으로, 왜 그 Run Script 가 존재하지 않는지는 자세한 것은 모릅니다만, 추가하면 크래쉬 하지 않게 됩니다.
Framework not found Pods_**에서 빌드가 통과되지 않는 경우
[Build Phases] -> [Link Binary With Libraries]를 확인해 보세요.
오류로 표시되는 Framework를 삭제합니다.
이전부터 CocoaPods에서 라이브러리를 관리하고 있는 프로젝트라면 Pod_**.framework
라는 것이 Link Binary With Libraries
로 설정되어 있습니다.
그러나 Podfile을 abstract_target
로 쓰도록 했을 경우, 새롭게 Pods-**-**.framework
라는 것이 설정되므로 Pod_**.framework
가 불필요하게 됩니다.
불필요한 것이 설정되어 있기 때문에 빌드에 실패했습니다.
요약
Embedded Framework의 도입은 일부 빠짐없이 넘으면 매우 편리하므로 추천입니다!
Reference
이 문제에 관하여(Embedded Framework를 도입하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/edm/items/4cda53320dfa0858d542
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import Foundation
import Alamofire
public class Util {
public var name: String?
public init() {
}
}
import UIKit
import SampleFramework
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let util = Util()
util.name = "hoge"
}
}
// Podfile
abstract_target 'All' do # Targetとかぶらなければ、名前の文字列は何でも大丈夫です
pod 'Alamofire'
target 'SampleApp' do # AlamofireとSVProgressHUDがインストールされる
pod 'SVProgressHUD'
end
target 'SampleFramework' do # Alamofireがインストールされる
end
end
Embedded Framework의 도입은 일부 빠짐없이 넘으면 매우 편리하므로 추천입니다!
Reference
이 문제에 관하여(Embedded Framework를 도입하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/edm/items/4cda53320dfa0858d542텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)