web-dev-qa-db-ja.com

無効Swiftサポート-ファイルがXcode10.1と一致しません

私はそこに同様の質問があることを知っています!しかし、彼らは古いです。私たちは以前にiTunesにリリースしたことがありますが、問題に直面したことはありません。たくさんのサブプロジェクトとココアポッドがあります。何が問題なのかわからない。

enter image description here

10
Dheeraj

Xcode 10.1のリリースノートには、次の行があります。

App StoreとTestFlightは、arm64eを含む提出を受け付けません。オーガナイザーウィンドウから配布すると、Xcodeはアプリからarm64eコンテンツを削除します。

私たちの場合、これがそれを修正するための鍵でした。 CIはxcodebuildを使用してIPAをコンパイルおよびアーカイブし、fastlaneを使用してアップロードします。最初のステップは、IPAアーカイブを解凍することです。

そうすることで、SwiftSupportフォルダーとアプリケーションのフレームワークフォルダーにあるSwift標準ライブラリが得られます。そのリリースノートをヒントとして使用すると、Xcode10.1の標準ライブラリには4つのアーキテクチャが付属していることがわかりました。 :

% file /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/Swift/iphoneos/libswiftCore.dylib 
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/Swift/iphoneos/libswiftCore.dylib: Mach-O universal binary with 4 architectures: [arm_v7:Mach-O dynamically linked shared library arm_v7] [arm64]
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/Swift/iphoneos/libswiftCore.dylib (for architecture armv7):  Mach-O dynamically linked shared library arm_v7
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/Swift/iphoneos/libswiftCore.dylib (for architecture armv7s): Mach-O dynamically linked shared library arm_v7s
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/Swift/iphoneos/libswiftCore.dylib (for architecture arm64):  Mach-O 64-bit dynamically linked shared library arm64
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/Swift/iphoneos/libswiftCore.dylib (for architecture cputype (16777228) cpusubtype (2)):  Mach-O 64-bit dynamically linked shared library arm64

未知のアーキテクチャにある最後のものに注意してください。それはarm64eです。これらのファイルをそのままアップロードすると、TestFlight/iTunesConnectは、表示されているメッセージとともにバイナリを拒否します。

私たちにとっての解決策は、標準ライブラリをコピーし、lipoを使用してarm64eスライスを削除してから、配布証明書で署名することでした。次に、IPAアーカイブを再パッケージ化してアップロードできます。

お役に立てば幸いです。提出用のアプリケーションをどのように構築しているかが明確ではないため、これに対処するのは難しいかもしれませんが、何が起こっているのかを理解した後、構築スクリプトを変更することは難しくありませんでした。

7
Scott K.