Xcodeを11.4に更新したところ、プロジェクトをアーカイブすると「セグメンテーション違反11」が表示されました。
このプロジェクトはXcode 11.3.1でアーカイブしますが、現在はアーカイブしません。
他の誰かが同じ問題に遭遇しましたか?
編集:2020年4月15日
AppleはXcode 11.4.1をリリースしました
Xcodeを11.4に更新したところ、プロジェクトをアーカイブすると「セグメンテーション違反11」が表示されました。
このプロジェクトはXcode 11.3.1でアーカイブしますが、現在はアーカイブしません。
他の誰かが同じ問題に遭遇しましたか?
編集:2020年4月15日
AppleはXcode 11.4.1をリリースしました
回答:
同じ問題が発生しました。アーカイブはリリースビルド構成を使用するため、すべてのコンパイラ設定を調べて、これらのセグメンテーションエラーの原因となっている違いを特定しました。
私の場合は問題は、私は設定を変更すると消えテスタビリティを有効にYESためのリリース。
いいえ、アーカイブまたはリリースビルドのこれの欠点は何なのか、あるいはこの特定の設定が問題を軽減する理由はわかりませんが、結局のところ、この段階に到達するのに1年かかるプロジェクトがあります。これを社内のベータテスターに伝えたいと思っているので、これをテストフライトで提出し、自分の進行状況を確認します。
コンパイラーはSeg Faultingであってはならないので、これは間違いなくAppleのバグだと思います。デバッグ構成でコンパイルするという事実は、これをサポートします。私のプロジェクトは非常に大きいので、バグを提出するためにこれを再現する方法がわかりませんが、Appleフォーラムで何らかの応答を得ることができるかどうかを確認します。
ビルド設定でをに設定するSWIFT_COMPILATION_MODE
と、問題を見つけるのに役立ちましたwholemodule
。次に、コンパイル後に、エラーを引き起こしたクラス関数につながるより具体的なエラーが発生しました。その後、元の状態に戻しました。
多分それはあなたにも役立ちます。
私の場合、初期入力パラメータセットに三項演算子が使用されていました。Swift 5.2はもうそれをサポートしていないようです。
// Leads to error with Xcode 11.4
init(value: UIColor = Constants.staticBoolean ? .white : .green)
私の場合、Eurekaポッドでエラーが発生しました
Segmentation fault: 11 (in target 'Eureka' from project 'Pods')
ポッドファイルで私は最新バージョンを提供しました:
pod 'Eureka', '~> 5.2.1'
また、に設定SWIFT_COMPILATION_MODE
しwholemodule
ます。
他のレスポンダと同様に、ここでエラーメッセージに埋め込まれたSwiftUIの問題がありました(Xcode 11.4を使用)。私の場合、使用すると.embedInScrollView()
ビルドエラーが発生しました。それらの呼び出しを無効にすることで修正されました。回避策として.embedInScrollView()
、次のようにViewModifier に入れました。
public struct WrapInScrollView: ViewModifier {
public func body(content: Content) -> some View {
content
.embedInScrollView()
}
public init() {}
}
次に、次のように、元の呼び出しと少し同じようにその修飾子を使用します。
.modifier(WrapInScrollView())
つまり、引き続きscrollViewに埋め込むことができますが、Seg 11エラーはなくなります。
残念ながら、Enable Testabilityソリューションは私には機能しませんでした。
一時的な回避策(AppleがXcode 11.4 Swiftコンパイラの問題を修正するまで)は、失敗したターゲットで、リリースの最適化レベルを「最適化なし」に変更することです(SWIFT_OPTIMIZATION_LEVEL = "-Onone";
)。複数のフレームワークに分割されている私たちのプロジェクトで動作します。1つだけをに設定する必要があります-Onone
。
ただし、Appleのドキュメントでは、このフラグをコードに含めないように求めています。これは開発用であり、最小限の最適化を実行し、すべてのデバッグ情報を保持します。
私たちは待つ必要があると思います: '(
この例外を受け取りました。アーカイブログは、特定のSwiftUIファイル内にあることを理解するのに役立ちました。除去のプロセスによって、私が去ったことがわかりcontentInsets()
、alwaysBounceVertical()
修飾子VStack
はの一部ではなかったList
:
VStack {
// more stuff
}
.contentInsets(UIEdgeInsets(top: 20, left: 0, bottom: 0, right: 0))
.alwaysBounceVertical()
これらの修飾子を削除すると、リリースアーカイブが正常に完了しました。