2019.5.16
前回の記事(Expoを使ったReact Native環境構築)で環境構築しまして、更にFirebaseと連携させるところまでやりたかったんですが、途中でエラーが解消できず手詰まりになってしまいましたが、失敗ログとして書き残します。
React Native Firebaseというモジュールを使います。
公式サイトに導入方法が載っています。こちらを参考にして進めていきます。
https://rnfirebase.io/docs/v4.0.x/installation/initial-setup
今回は以前に作ったプロジェクトをそのまま使います。
expo eject
が必要expoというプラットフォームを使っているのでXCodeプロジェクトが隠蔽されています。なのでexpo eject
でプロジェクトを展開してやる必要があります。
展開方法やXCodeとAndroid Studioのプロジェクト名などを聞かれるので雰囲気で入力しました。
? How would you like to eject your app?
Read more: https://docs.expo.io/versions/latest/expokit/eject/ React Native
We have a couple of questions to ask you about how you'd like to name your app:
? What should your app appear as on a user's home screen? react-native-sample
? What should your Android Studio and Xcode projects be called? react_native_sample
展開するとiosフォルダやandroidフォルダが出てきました。
この説明の通りに進めます。
firebaseのプロジェクトからアプリを作成してGoogleService-Info.plist
をダウンロードします。そしてダウンロードしてきたファイルをios/[YOUR APP NAME]/GoogleService-Info.plist
に配置してXCodeプロジェクトにファイルを追加します。(やり方はこちらの通り)
ios/[YOUR APP NAME]/AppDelegate.m
の先頭に以下を追記します。
#import <Firebase.h>
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
メソッドのスコープ内の最初に以下を追記。
[FIRApp configure];
ここを参考にXCodeプロジェクトにfirebaseのSDKを追加していきます。
Podfile
が必要らしいので追加。
$ cd ios/[YOUR APP NAME]
$ pod init
Podfile
の先頭を下記のように変更。
platform :ios, '9.0'
pod 'Firebase/Core', '~> 4.13.0'
pod install
したら下記のように怒られた。Podfile
中でreact_native_sample-tvOSTests
が二回も定義されていたのが原因かな?なのでPodfile
の# target 'react_native_sample-tvOS' do
以下をすべてコメントアウトしたらinstallできました。
$ pod install
Analyzing dependencies
[!] The target `react_native_sample-tvOSTests` is declared twice.
react-native run-ios
で起動してみたら下記のエラーが出ました。
Error: Could not find iPhone 6 simulator
at Promise.then.udid (/Users/kawabatatoshi/practice/react-native-sample/node_modules/react-native/local-cli/runIOS/runIOS.js:149:7)
at new Promise (<anonymous>)
at runOnSimulator (/Users/kawabatatoshi/practice/react-native-sample/node_modules/react-native/local-cli/runIOS/runIOS.js:134:8)
at Object.runIOS [as func] (/Users/kawabatatoshi/practice/react-native-sample/node_modules/react-native/local-cli/runIOS/runIOS.js:106:8)
at /Users/kawabatatoshi/practice/react-native-sample/node_modules/react-native/local-cli/cliEntry.js:117:16
at <anonymous>
エラーメッセージでググってみるとXCodeのバージョンが新し目だとでるっぽいです。
こちらのQiitaの記事で解決できました。
https://qiita.com/wheatandcat/items/25ce51c2991daee6c8bd
晴れてreact-native run-ios
してみたらiOS simulatorは起動しますが、アプリは起動されず。。。手詰まりになってしまいました。
エラーが出ててこの方法をやってみたけど、解消されず。。。
Error: Command failed: /usr/libexec/PlistBuddy -c Print:CFBundleIdentifier build/Build/Products/Debug-iphonesimulator/react_native_sample.app/Info.plist
Print: Entry, ":CFBundleIdentifier", Does Not Exist
at checkExecSyncError (child_process.js:575:11)
at Object.execFileSync (child_process.js:593:13)
at /Users/kawabatatoshi/practice/react-native-sample/node_modules/react-native/local-cli/runIOS/runIOS.js:208:1
at <anonymous>
Expoを使わない方法でプロジェクトを作って仕切り直してみます。