Xcode 10 Beta 6をインストールし、すべてを更新していますが、このプロセスでFabricの小さな問題に遭遇しました。 FabricのウェブサイトにはXcode 10の特別な指示があります:
Xcode 10を使用している場合、Fabricキーを持つRun ScriptのBuild Phasesに移動し、Input Fields
セクションの下に+記号があります
+をクリックすると、自動的に$(SRCROOT)/newInputFile
が生成されます。newInputFile
は自動的に強調表示されます。
Fabricの指示を理解していません。 $(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)
の後に$(SRCROOT)/
をコピーしますか?INFOPLIST_PATHをinfo.plistへのファイルパスに置き換えますか?
これらすべてのオプションを試しましたが、Xcode 10でFabricがクラッシュします。AppDelegateのdidFinishLaunchingWithOptions
でFabric.with([Crashlytics.self])
をコメントアウトしたため、Fabricであることがわかります。
私は、Mahdi RBが推奨したとおりのことを行いました。 公式マニュアルガイド の手順に従っても機能しませんでした。
XCodeを使用してビルドすると、約2kのタスクが処理されます。ファブリックビルドは通常、マシンを起動し、xcodeを開いてアーカイブを実行すると機能します。その後、ほとんどの場合、ビルドが中断し始めます。 03/OCT/18にダウンロードした最新のファブリックとcrashlyticsを使用しています。私の他のプロジェクトで機能するのは本当に奇妙で、失敗したのはこれだけです。これは、XCode 10-バージョン10.0(10A255)で始まりました。以前のXCode 9で動作していました。
これは私が話していることの証拠です。
私の回避策は、fabricコマンドを呼び出す前にこのコマンドを追加することでした。例えば
sleep 15
"${PROJECT_DIR}/Fabric.framework/run" aaaaa aaaa
Macコンソールアプリでこのエラーが大量に発生していることに気づきましたが、関連があるかどうかはわかりません。
IBAgent-iOS - assertion failed - libxpc.dylib - and some numbers here.
XCodeのエラー
2018-10-03 13:53:58.698 uploadDSYM[46168:550157] Fabric.framework/run 1.7.2 (210)
2018-10-03 13:53:58.704 uploadDSYM[46168:550157] Using API Key: "123"
2018-10-03 13:53:58.704 uploadDSYM[46168:550157] Launched uploader in validation mode
error: Fabric: Info.plist Error
Unable to process Info.plist at path /Users/someuser/Library/Developer/Xcode/DerivedData/SampleApp-amwweapikvrbgafmmnyeyorkiufq/Build/Intermediates.noindex/ArchiveIntermediates/SampleApp/BuildProductsPath/Release-iphoneos/SampleApp.app/Info.plist
This could be a timing issue, make sure the Fabric run script build phase is the last build phase and no other scripts have moved Inspector.app from the location Xcode generated it. You can also add '$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)' as an "Input Files" dependency for your Fabric run script build phase.
そのplistリンクを開こうとしましたが、それはショートカットを指し、そのショートカットは実際のファイルを指しています。なぜ失敗するのかはわかりません。私の推測では、スクリプトの実行時にファイルが存在しなかったことと関係があります。遅延は問題を修正します。これが役立つことを願っています。
Xcode 10のみ、ファブリックの最終セットアップで問題に直面するユーザーはプロジェクトです。
Xcode 10から、Build PhaseのInput Filesフィールドでもう1つセットアップを行う必要があります。
これをコピーするだけです$(BUILT_PRODUCTS_DIR)/ $(INFOPLIST_PATH)そしてBuild PhaseのInput Filesフィールドに貼り付けます下の画像のように、Run Scriptの下に表示されます。
このリンクの詳細を参照してください: https://fabric.io/kits/ios/crashlytics/install
Info.plistが次のようにルートディレクトリにある場合、同じ問題が発生しました。
yoは次のように$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)
を変更する必要があります。
ファブリックinfo.plistエラーは、Xcodeワークスペースの設定を変更することで解決できます->ビルド設定->レガシービルドシステム
/bin/bash
に設定します。入力ファイルを次のように設定します。
(1) $(PROJECT_DIR)/$(INFOPLIST_FILE).
(2) $(PROJECT_DIR)/Scripts/set_bundle_build_number.sh
Change path to path of script so changes you make to the script
cause a re-run.
(3) $(TARGET_BUILD_DIR)/$(INFOPLIST_PATH)
Fixes XCode 10 issues of duplicate output phases.
「スクリプトの実行」をビルドフェーズの下部に移動することで、この問題を解決しました。もちろん、「dSYMファイルを使用したDWARF」と$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)
に変更しました。
私にとって、ビルドシステムを「レガシービルドシステム」に変更すると、アーカイブエラーが修正されました。ビルドシステムを変更するには、[ファイル]-> [ワークスペース設定]に移動し、ビルドシステムをデフォルトの[新しいビルドシステム]から[レガシービルドシステム]に変更します。
上記のどれも私にはうまくいきません。 Cocoapodsを使用している場合は、次の手順を実行します。
$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)
を[スクリプトの実行]セクションの入力ファイルに追加します。
[スクリプトの実行]ボックスで./Fabric.framework/run
を"${PODS_ROOT}/Fabric/run"
に置き換えます。
ビルド設定に移動して、Debug Information
を検索し、DWARF with dSYM File
に変更します。
少なくとも私にはうまくいきました。
私にとっての解決策は、丸括弧をこのような中括弧で置き換えることでした
${BUILT_PRODUCTS_DIR}/${INFOPLIST_PATH}
スクリプトフェーズでecho $(BUILT_PRODUCTS_DIR)
を呼び出すと、パスが実際に存在するかどうかを確認できます。丸括弧を使用すると、Xcodeビルドコンソール「BUILT_PRODUCTS_DIR:command not found」で次の情報が得られました。丸括弧を中括弧に置き換えると、実際のパスが出力されるため、スクリプトが最終的に機能しました。