Avatar
@d_date spm運用でプレビューに問題あるって話やけど、解法がわかったので共有しておくね 問題が発生するのは2つ。 X1. Previewのコードが直接含まれるlibraryをtype: .staticでproductに宣言している場合 X2. Bundle.moduleを利用している場合 それぞれ、 A1. AppやExtensionのためにproductに宣言するためのライブラリを1個宣言して作っておく。あわせて、ComponentのレイヤはPreviewsとしてまとめてtype: .dynamicでproductに宣言しておく。 // NG products: [ .library( name: "MyView", type: .static, targets: ["MyView"] ), ] // OK products: [ .library( name: "Preview", type: .dynamic, targets: ["MyView", "MyView2"] ), .library( name: "App", type: .static, targets: ["App"] ), ], A2. Bundle.moduleの生成されたコードが、Previewの場合にはBundleが生成されずにFatalErrorに落ちる不具合がある。 https://forums.swift.org/t/swiftui-previewer-crashes-while-in-swift-package-that-depends-on-anothers-packages-bundle-module-reference/41736 Bundle.moduleは利用せずに自前でBundleのextensionを書く。辛いけど仕方ない。 (edited)
On Xcode 12.1, SwiftUI Previewer crashes when it references another swift package it depends on and that swift package uses Bundle.module. Basic code snippet that crashes: import SwiftUI import Theme // Import package that uses Bundle.module /// This view will crash the previewer struct ThisViewCrashesPreview: View { var body: some View {...