はじめに
- iOSアプリ開発でSwift Package Manager扱うことが増えてきました。今後、既存のライブラリをSwift Package Managerに対応させることが増えてくると思います。ライブラリを対応させるなかでのハマりどころについてまとめました
環境
Xcode 12.2
Build version 12B45b
Apple Swift version 5.3.1 (swiftlang-1200.0.41 clang-1200.0.32.8)
OSの分岐
- Swift Package ManagerはiOS以外のOSをサポートしているのでOSによってはサポートしていないフレームワークもあるので分岐が必須です
#if os(iOS)
import UIKit
class HogeView: UIView {
}
#endif
-
Package Manager Conditional Target Dependencies
- ためしたことないですがこの機能を使えば、分岐を減らせそうだと思いました
Bundleの呼び出し
- Swift 5.3から画像やxibなどのリソースファイルがサポートされるようになりました。
- サポート伴い、Swift Package ManagerでのBundleの呼び出し方が変わりました。画像やXibなどの呼び出しでは分岐が必要になります。SwiftGenでも対応のため、変更が入ってました。
#if SWIFT_PACKAGE && swift(>=5.3)
let bundle = Bundle.module
#else
let bundle = Bundle(for: Hoge.self)
#endif