2017-02-10 31 views
6

私はFirebaseをiOSアプリケーションで使用していますが、2つの別々のFirebaseプロジェクト(本番用と開発用)があります。私の2つの.plistファイルはGoogleService-Info.plistGoogleService-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 Flagsadding 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)です。

答えて

5

私は同じ問題に直面しました。あなたのために働くことができるようにしてください。

- Remove all Framework from Project using Below command. 

    1. pod deintegrate 
    2. pod clean 

- Install pod file Again. 
    1. pod install 

問題: - - :

ていることを確認してくださいは、あなたがOther Linker Flags.

$(inherited) 
-ObjC 

ソリューションで2つのパラメータを追加します追加したプロジェクトでの参照の問題に直面している(フレームワークが見つかりません特定の監督で)。

注: -プロジェクトをクリーンアップします。

+0

これはトリックでした。 '$(継承)'と '-ObjC'という2つのパラメータは既に他のリンカフラグのセクションにあり、他の80〜100行(半分はフレームワーク)です。ポッド分解は機能しましたが、ポッドクリーンは未知のコマンドです(私のポッドバージョンは1.2.0です)。私はまだポッドをインストールして、きれいにしてビルドし、もはやエラーを受け取りませんでした。 –

+0

@PatNeedhamを聞いてうれしい – iMHitesh

1

GoogleToolboxForMacポッドのGTMNSData + zlib.mがまだ作成され、アプリにリンクされていることを確認してください。

enter image description here

-ObjCとGoogleToolboxForMacを-frameworkはリンクログであることを確認してください:

enter image description here

+0

GTMNSData + zlib.mはすでに私のためにソースをコンパイルしていますが、スクリーンショットにも同じコンパイラフラグが表示されます(-DOS_OBJECT_USE_OBJC = 0)。 –

+0

ええ、xcode環境が壊れている可能性があります。いくつかのオプションは、.xcworkspaceファイルの再生成、クリーニングの構築、および/またはDerivedDataの削除です。また、GTMNSData + zlib.mを構文エラーで編集し、再構築されることを確認することもできます。それがうまくいかない場合は、gtm_dataByGzippingBytesを確実にビルドされているアプリ内の場所にコピーすることができます。 –

+0

構文エラーでファイルを編集するとビルドが失敗し、エラーを取り除くとビルドできますが、同じランタイムエラーが発生します。その機能をビルド中のアプリケーションの別の場所にコピーすると、プロジェクトがSwiftにある間にgtm_dataByGzippingDataがObjective-Cの機能であればどこで行うのですか? .xcworkspaceファイルを再生成するには、削除してからpod installを実行するだけですか? –

関連する問題