最近、私がコンパイルしてAppleに提出したプロジェクトを開きました。
私はそれを数か月間触れていませんでしたが、この奇妙なコンパイルエラーが発生しています:
#import <Crashlytics/Crashlytics.h>
エラーは次のとおりです。
'Crashlytics/Crashlytics.h' file not found
フレームワークが見つからないことは明らかですが、プロジェクトが数か月前に機能していたとき、突然停止した理由については困惑しています。
なぜ提案がありますか?
Xcode:4.6.3 Mac OS X:10.8.4
$(SRCROOT)
をプロジェクトビルド設定(検索パス)のフレームワーク検索パスに追加するだけです。
Crashlyticsのインストールプロセスは、その_Crashlytics.framework
_をプロジェクトフォルダーにドロップします(またはシンボリックリンクを作成します)。
Crashlytics.frameworkをプロジェクトフォルダー階層のどこかに深く移動した場合-'recursive'を右側に設定するか、_Header Search Paths
_の親フォルダーを直接ポイントするだけです。
$(SRCROOT)/Path/to/the/folder/containing/Crashlytics.framework
プロジェクトとディスクからフレームワークを削除します。 Fabricプラグインの最新バージョンがあることを確認してください。
次のコマンドを使用して、フレームワークをプラグインフォルダーからデスクトップにコピーします。
ditto -xk ~/Library/Caches/com.crashlytics.mac/5b91b14e832a7b1c29441ec5ba109810/sdks/ios/com.Twitter.crashlytics.ios-default.Zip ~/Desktop/
ditto -xk ~/Library/Caches/com.crashlytics.mac/5b91b14e832a7b1c29441ec5ba109810/sdks/ios/io.fabric.sdk.ios-default.Zip ~/Desktop/
デスクトップからプロジェクトにフレームワークを追加します。
情報: https://twittercommunity.com/t/error-upgrading-from-crashlytics-on-ios/36196/2
CocoaPodsを使用してCrashlyticsフレームワークを追加することをお勧めします。もうパスを気にする必要はありません。
Podfile:
pod 'Crashlytics', '~> 3.4.1'
DSYMアップロードのスクリプトビルドフェーズ:
./Pods/Crashlytics/iOS/Crashlytics.framework/run <your_crashlytics_id>
インポート:
#import <Crashlytics/Crashlytics.h>
私にとって、これはうまくいきました:
プロジェクトからファブリックおよびcrashlyticsフレームワークを削除し、プロジェクトのディスクからファイルを削除します。
次の目的で追加した場合は、appdelegate.m
ファイルの行をコメント化します。
import Fabric/Fabric.h
import Crashlytics/Crashlytics.h
そして
[Fabric with:@[CrashlyticsKit]];
ファブリックアプリで[新しいアプリ]を選択し、Xcodeプロジェクトファイルを選択します
ビルドスクリプトを再コピーし、指示に従ってビルドします。ビルド手順が、上の行をコメントする必要がある理由です。これらの行をそのままにしておくと機能しません。
ビルドスクリプトの実行後、アプリウィンドウからプロジェクトナビゲーターにフレームワークをドラッグするように求められます。これにより、フレームワークの最新バージョン(.hファイルを含む)がプロジェクトにコピーされます。
私は手動でダウンロードして他のプロジェクトからコピーしようとしましたが、これがアプリのフレームワークファイルを失った後に回復できる唯一の方法です。
私の場合、フレームワークはプロジェクトフォルダーにありましたが、Project Navigatorにはありませんでした。私はそれをプロジェクトにドラッグしましたが、すべてうまくいきました。
私の場合、古いCrashlyticsインストールからMacアプリを介してCocoapodsに移行していました。この質問に対する多くの回答では、すべてを完全に削除して最初からやり直すことを推奨しています。これを始めたところ、 Fabricのドキュメント にあるコードと、Runスクリプトビルドフェーズにコピーする内容を指示するステップでFabricアプリに表示されているコードとの間に不一致が見つかりました。
Fabricのドキュメントには、文字列全体を囲む二重引用符があります:"${PODS_ROOT}/Fabric/Fabric.framework/run <Your_API_Key> <Your_Build_Secret>"
Fabricアプリでは、run
実行可能ファイルへのパスを二重引用符で囲むだけでした:"${PODS_ROOT}/Fabric/Fabric.framework/run" <Your_API_Key> <Your_Build_Secret>
したがって、すべてを削除してやり直す前に、Run Script Build Phaseを次のように更新してみてください。
"${PODS_ROOT}/Fabric/Fabric.framework/run" <Your_API_Key> <Your_Build_Secret>
thenチェックアウトCrashlytics
をチェックインした後、(githubを介して)分散チームでこの問題が発生しました。 Crashlytics.framework
には、「バージョン」という1つのフォルダーのみが含まれます。 Crashlytics.framework
内のコンテンツのバージョンを別の場所に保存し、後でそれらをコピーしてCrashlytics.framework
に貼り付ける必要があります。
Crashlytics.frameworkをプロジェクトから削除し、diskにします。コピーして再度追加します。助けてくれました。
作業フォルダーの名前を変更しましたが、Craslyticsが失敗します。ビルド設定(検索パス)でこれを確認します。
がんばろう!
以前にFabricにアップグレードしたことがあり、問題はありませんでした。数日後、私は同じプロジェクトを再度開きましたが、crashlytics.hファイルの問題がありませんでした。
プロジェクトをコンパイルしていないため、プラグインから単純に再インストールできませんでした(プロジェクトに非常に多くのCLS_LOGメッセージと不足しているcrashlytics.hファイルへの参照があったため、ビルドを許可するためにそれらを削除するには長い時間がかかりました動作するように-リファクタリングはCLS_LOGでは動作しません)。
そこで、代わりにプロジェクトからcrashlytics.frameworkを削除し、プラグインから直接復元するために次のことを行いました。
Fabricプラグインを再度ダウンロードし、ZipファイルをダブルクリックしてFabricアプリケーションを解凍します。
Fabricアイコンを右クリックし、「パッケージの内容を表示」
Crashlytics.frameworkフォルダーをデスクトップにコピーし、[ファイル]-> [ファイルを追加...]を使用してプロジェクトに再追加します。
ステップ3が機能しない場合は、crashlytics.frameworkをコンピューターのプロジェクトフォルダーに直接追加し、ステップ3と同じようにXcodeを介してプロジェクトリストに追加することもできますが、[必要に応じてアイテムをコピー]のチェックを外しますすでに自分でファイルを配置しているので。
その後、私のプロジェクトはコンパイルされ、再び正常に動作しました。
ファイルが失われた理由に関する推測の面では?アップグレードプロセスの一環として、古いフレームワークを削除してから、プラグインからスクリプトなどを実行しました。何が起こったのかは、後でゴミ箱を空にしたとき、いくつかの参照が失われたと思います。また、Crashlyticsを.gitignoreファイルに入れて、コミットされたすべてのプロジェクトから消えてしまったという問題もありました。
これが誰かを助けることを願っています!
フレームワークの検索パスを試し、フレームワークファイルの再配置と再接続を試みました。ビルド設定(ライブラリとバイナリのリンクセクション)を確認しましたが、エラーは続きました。
最後に、フレームワークを再インストールしました。これには2〜3分しかかかりません。この問題は、Crashlytics.frameworkをルートディレクトリから別のサブフォルダーに再配置したことが原因の可能性がありますが、正確な理由はわかりません。
import
およびstartWithAPIKey
ステートメントを追加して戻します