私はFirebaseをiOSアプリケーションで使用していますが、2つの別々のFirebaseプロジェクト(本番用と開発用)があります。私の2つの.plistファイルはGoogleService-Info.plist
とGoogleService-Info-Dev.plist
です。ターゲット - >ビルド設定 - >その他のスウィフトフラグで設定されたフラグに基づいて選択できました。アプリケーションを設定中にFirebaseエラーが発生しました -
インサイドAppDelegate didFinishLaunchingWithOptions
:
#if DEBUG
let buildFor = "DEV"
#else
let buildFor = "PROD"
#endif
let firebasePlistFileName = buildFor == "DEV" ? "GoogleService-Info-Dev" : "GoogleService-Info"
let firebaseOptions = FIROptions(contentsOfFile: NSBundle.mainBundle().pathForResource(firebasePlistFileName, ofType: "plist"))
FIRApp.configureWithOptions(firebaseOptions) // line causing new Firebase error
これは私が別のCocoapodプロジェクトに問題があったとき、今日に至るまで細かいアップ取り組んできました。 >一般 - - 私は最終的に目標の下に私のアプリを選択していることを決議
dyld: Library not loaded: @rpath/OtherPod.framework/OtherPod
Referenced from:
/Users/me/Library/Developer/CoreSimulator/Devices/12345678-E1C4-480F-B1D9-C10823DEA810/data/Containers/Bundle/Application/AE7B6EB0-43AB-CCCC-BBBB-AAAA71BF/MyApp.app/MyApp
Reason: image not found
>リンクされたフレームワークとライブラリ、その後、すべての選択肢を追加しました:私はXcodeプロジェクトまたは削除派生Dataフォルダを掃除するとき、それは起こって始めたと思いますWorkspace
フォルダー(7個の他のポッドプロジェクト)内にあり、オプションとして追加したものを設定します。それ以来、私はこの記事のタイトルに記載されているエラーに直面してきた:
2017-02-10 17:19:29.660 MyApp[12639:182433] +[NSData gtm_dataByGzippingData:error:]: unrecognized selector sent to class 0x10a0442e8
2017-02-10 17:19:29.680 MyApp[12639:182433] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+[NSData gtm_dataByGzippingData:error:]: unrecognized selector sent to class 0x10a0442e8'
*** First throw call stack:
(
0 CoreFoundation 0x0000000109d88d4b __exceptionPreprocess + 171
1 libobjc.A.dylib 0x00000001097f121e objc_exception_throw + 48
2 CoreFoundation 0x0000000109df8e44 +[NSObject(NSObject) doesNotRecognizeSelector:] + 132
3 CoreFoundation 0x0000000109d0e005 ___forwarding___ + 1013
4 CoreFoundation 0x0000000109d0db88 _CF_forwarding_prep_0 + 120
5 MyApp 0x0000000102d73c9d -[FIRNetwork postURL:payload:queue:usingBackgroundSession:completionHandler:] + 331
6 MyApp 0x0000000102d70e72 -[FIRClearcutLogger sendNextPendingRequestWithCompletionHandler:] + 570
7 MyApp 0x0000000102d70918 -[FIRClearcutLogger sendLogsWithCompletionHandler:] + 447
8 libdispatch.dylib 0x000000010a6ab978 _dispatch_call_block_and_release + 12
9 libdispatch.dylib 0x000000010a6d50cd _dispatch_client_callout + 8
10 libdispatch.dylib 0x000000010a6b2e17 _dispatch_queue_serial_drain + 236
11 libdispatch.dylib 0x000000010a6b3b4b _dispatch_queue_invoke + 1073
12 libdispatch.dylib 0x000000010a6b402b _dispatch_queue_override_invoke + 683
13 libdispatch.dylib 0x000000010a6b6385 _dispatch_root_queue_drain + 720
14 libdispatch.dylib 0x000000010a6b6059 _dispatch_worker_thread3 + 123
15 libsystem_pthread.dylib 0x000000010aa3a712 _pthread_wqthread + 1299
16 libsystem_pthread.dylib 0x000000010aa3a1ed start_wqthread + 13
)
libc++abi.dylib: terminating with uncaught exception of type NSException
私はadding to the Other Linker Flags、adding to the Link Binary with Librariesなど、さまざまな修正、たくさんのを試してみましたが、それらのどれも働いていません。
認識できないセレクタはどのようなものでしょうか、それをどのように変更/削除できますか?この問題は、私が直面していた以前のもの(ライブラリがロードされていないため)に起因する可能性がありますか?
説明のために、unrecognized selector sent to class
エラーが発生すると、Xcodeデバッグナビゲータはスレッド7にフォーカスされ、FIRApp.configureWithOptions(firebaseOptions)
行が強調表示されます。
私は、現在のエラー - でコミット古いから、プロジェクトの内容の大部分を置き換えること、(別のディレクトリに私のリポジトリをクローン化された)前のgitのコミットに戻すことにより、一時的な修正を見つけ
更新ルートディレクトリにのApp-Nameフォルダ、のApp-Name .xcodeproj、およびApp-Name .xcworkspaceなどのコピーを作成します。私はシミュレータ(iOS 10.2を実行しているiPhone 7)でテストしたところ、うまくいきました。私はiTunes Connectにビルドを正常に提出し、自分のデバイス(iPhone 5c with 10.2.1)でそのビルドを実行することができましたが、それを削除してXcodeからビルドを実行しようとしたときに、同じエラーが再び発生しました。ただし、エラーはシミュレータで実行中にが発生しませんでした。これは、物理デバイスとシミュレータの両方で発生した初期のエラーシナリオとは対照的です。
これは私が最初に投稿したスタックトレースがシミュレータ上でアプリケーションを実行していることを覚えていました。デバイス上で実行すると出力が少なくなりました。具体的には、*** First throw call stack:
の後の内容は、ファイル/関数名でのよりわかりやすい出力ではなく、(0x1d01cdf7 0x1c27f077 0x1d022467 0x1d020579 0x1cf453d8 0x31ff3f 0x31d653 0x31d05d 0x1c57d57 0x1c63e63 0x1c5b205 0x1c64391 0x1c65d9f 0x1c65ba7 0x1c877937 0x1c877490)
です。
これはトリックでした。 '$(継承)'と '-ObjC'という2つのパラメータは既に他のリンカフラグのセクションにあり、他の80〜100行(半分はフレームワーク)です。ポッド分解は機能しましたが、ポッドクリーンは未知のコマンドです(私のポッドバージョンは1.2.0です)。私はまだポッドをインストールして、きれいにしてビルドし、もはやエラーを受け取りませんでした。 –
@PatNeedhamを聞いてうれしい – iMHitesh