web-dev-qa-db-ja.com

Xcodeはstrip-frameworks.shディレクトリを見つけることができません

最近Xcodeをバージョン7.1にアップデートしました。これには、Swift 2.1。Swift 2.1を問題なくインストールしました。プロジェクトを実行しようとすると、以前のバージョンはSwift 2.1をサポートしていなかったため、Realmの最新バージョンを取得する必要がありました。古いフレームワークを削除し、Realm 0.96.2をインポートしました。実行するたびに、このエラーが発生します:

bash: /Users/userName/Library/Developer/Xcode/DerivedData/appName-ghiroqitgsbvfhdqxsscyokyoouz/Build/Products/Debug-iphoneos/appName.app/Frameworks/Realm.framework/strip-frameworks.sh: No such file or directory

アプリをApp Storeに送信する場合に必要なスクリプトに問題があると思われるため、Run Scriptフェーズを削除し、新しいフェーズを追加して、Realmドキュメントサイトからスクリプトをコピーしました。

bash "${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}/Realm.framework/strip-frameworks.sh"

私はそれがそれを修正すると思ったが、そうではなかった。次に、問題はRealm.frameworkまたはRealmSwift.frameworkファイルにあるのではないかと思ったので、それらを削除して再インポートしました(念のために)。何も変わっていません。このエラーに修正があるかどうかは誰にもわかりますか?

ありがとう! -CodeIt

29
CodeIt

エラーメッセージから、_Realm.framework_および_RealmSwift.framework_をEmbedded Binariesペインに追加していないようです。General以下のように、プロジェクトのタブ:

Embedded Binaries

さらに検証するために、タブBuild Phasesを確認できます。以下のようになります。

Build Phases

注:スクリプト実行フェーズがafterになることを確認してくださいEmbed Frameworksフェーズ。

なぜこのスクリプトが必要なのですか?

ベンダーのフレームワークは、単一の実行可能ファイルだけでなく、実際には、異なるアーキテクチャ上のリンクされた実行可能ファイルのアーカイブであるFATバイナリです。これには、電話での展開に必要な_arm64_および_armv7_のアーキテクチャスライスと、シミュレータでアプリを実行するのに必要な_i386_および_x86_64_が含まれます。

_strip-frameworks.sh_スクリプトの主な役割は、不要なスライスを削除することです。 iTunes Connectはシミュレータアーキテクチャを備えたアプリを拒否するため、これにより最終的なパッケージサイズが小さくなり、AppStoreの展開に必要になります。

詳細

このスクリプトは、ビルド設定_VALID_ARCHS_に基づいて機能します。これにより、フレームワークの署名付き実行可能ファイルが変更されるため、コード署名にも注意する必要があります。ビットコードの導入以来、責任としてさらに後処理が行われました。フレームワークバンドルから含まれる_*.bcsymbolmap_ファイルを抽出し、それらを_*.xcarchive_の正しいパスに配置します。

PSPDFKitのビットコードに関するFAQトピック には、BCSymbolMapsが何であるかについての適切な説明があります。

BCSymbolMapは、ビットコードのdSYMによく似ています。 Xcodeは、アプリバイナリの作成の一部として、またすべての動的フレームワーク用にビルドします。関数/メソッド名を再記号化してクラッシャーを理解するために必要です。

42
marius