My ReactネイティブアプリはXCodeシミュレーターで問題なく動作しますが、物理デバイス、iPhoneで実行すると問題が発生します。アプリが起動し、Reactネイティブスプラッシュスクリーン、10〜15秒後にアプリがクラッシュ/閉じる。これの原因は何ですか、どのように防ぐことができますか?
問題が見つかったようです。 https://facebook.github.io/react-native/docs/running-on-device によると、デバイスでアプリをビルドして実行すると、アプリはパッケージャーをコンピューターにインストールし、アプリをライブリロードできます。つまり、デバイスをコンピューターに接続するか、コンピューターと同じwifiネットワークに接続する必要があります。デバイスがパッケージャーにアクセスできない場合、スプラッシュ画面にスタックして終了します。
デバイスで確実に実行するには、ビルドスキーマとビルドリリースバージョンを編集します。
パッケージャーを接続せずに、デバイス上でデバッグでアプリを実行することは完全に可能であるはずです! react-native bundle
を使用してオフラインバンドルを作成し、Xcodeプロジェクトに追加する必要があります。その後、パッケージャーが利用できない場合、アプリはそのバンドルにフォールバックする必要があります。
これは、Deploying to Device FBのドキュメントにありましたが、なぜもう存在しないのかわかりません。
サンプル呼び出し(TypeScriptによってindex.ios.js
が./dist
に配置されます):
react-native bundle --dev true --assets-dest ./ios --entry-file ./dist/index.ios.js --platform ios --bundle-output ios/main.jsbundle
また、開発サーバーにアクセスするのではなく、バンドルから直接実行するようにアプリに指示する必要があるようです。これにより、タイムアウトが発生するようです(OPと同じ問題がありました)。
この行をコメントアウトします。
jsCodeLocation = // whatever
そして、次の行を追加します。
jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
IPhoneをインターネットから切断しようとしましたが、その後の起動で問題はなくなりました。
そのため、何かがネットワーク関連のことをしようとしており、遅延を引き起こしています。これは簡単な修正ですが、特定の犯人が見つかるまでそれを行います。
私は同じ問題を抱えていました。
Xcodeで行ったことは、Products-> Scheme-> Schemeの編集-> Runタブを選択->ビルド構成をReleaseに変更(デフォルトはデバッグモードでした) )およびデバイスでアプリを実行します。
はるかに高速で、ネイティブアプリのように実行されました。
おそらくアプリに署名する必要があります。
[プロジェクト]ナビゲーターで、アプリをクリックします。次に、プロジェクトとターゲットのリストからターゲットを選択します。 [全般]タブで、[署名]セクションを見つけます。ここでチームを指定する必要があります。
詳細については、このリンクを参照してください: https://developer.Apple.com/library/content/documentation/IDEs/Conceptual/AppDistributionGuide/LaunchingYourApponDevices/LaunchingYourApponDevices.html#//Apple_ref/doc/uid/TP40012582-CH27 -SW4
私は、プロジェクトでfirebaseフレームワークを使用しています。 xcodeプロジェクトにGoogleService-Info.plistファイルを追加するのを忘れていました。追加すると問題はなくなりました。
反応ネイティブスプラッシュスクリーンだったこの問題に直面しました。それを削除した後、それは働いています
この問題は、次の可能性により発生する可能性があります。
release
ではなくdebug
に設定されているため、常にmain.jsbundle
、デバッグサーバーから実行する代わりに。変更するProduct-> Schema-> Edit Schema-> Run-> Build Configuration:DebugXcodeログで、NSURLConnection finished with error - code -1004
または NSURLConnection finished with error - code -1022
。 Project-> Target-> Build Phases-> +-> New Run Script Phaseに移動します
React Native 50:export NODE_BINARY=node ../node_modules/react-native/packager/react-native-xcode.sh
React Native 50:export NODE_BINARY=node ../node_modules/react-native/scripts/react-native-xcode.sh
<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict>