web-dev-qa-db-ja.com

React Native / Xcode Upgradeで、RCTConvert.hが見つかりません

アプリはReact Native 0.35.0で正常に実行されました。 react-native-git-upgradeを介して0.40.0に更新した後、XCodeでアプリをビルド/実行しようとすると、多くの字句/プリプロセッサの問題が発生します。

React/RCTBridgeModule.h' file not found

問題をクリックすると、これが強調表示されます:

#import <React/RCTBridgeModule.h>

検索パスの問題ではないようです。

Node_modulesを削除してnpm installを再度実行しようとしましたが、何も修正されていません。

51

Th0thが指摘したように、iOSのRN 0.40には重大な変更があります。つまり、RNヘッダー宣言は、インクルードパス$(BUILT_PRODUCTS_DIR)/include/Reactを指すように更新されます。

この問題を解決するには、次を実行する必要があります。

  1. Xcodeで、プロジェクトスキームに移動します([製品]-> [スキーム]-> [スキームの管理]->プロジェクトをダブルクリックします)。
  2. 左ペインの[ビルド]オプションをクリックします。
  3. Build Optionsの下にある「Parallelize Build」のチェックを外します。
  4. 次に、ターゲットセクションで、「+」ボタンをクリックし、「React」を検索します。それを選択し、「追加」をクリックします。
  5. 「React」がTargetsセクションの下に表示されます。リストの最初のアイテム(プロジェクトの前)になるように、クリックして上部にドラッグします。
  6. プロジェクトをクリーンアップしてビルドします。

注:それらのネイティブの.hファイルを参照している他のライブラリ(react-native-fbsdkなど)でも同様のヘッダーの問題が発生する可能性があります。

114
max23_

反応ネイティブ0.40


#import "RCTBridgeModule.h"#import <React/RCTBridgeModule.h>に置き換える必要があります

その後cleanおよびbuild it it。

6
Ashok R

0.40に重大な変更があります。詳細は こちら で確認できます。

リリースノートから直接引用:

つまり、すべてのiOSネイティブライブラリには、RN 0.40のメジャーバージョンバンプが必要です。この規模の変化を最小限に抑えるよう努めており、ご不便をおかけして申し訳ございません。

そのため、すべてのネイティブiOSライブラリは、react-nativeバージョン0.40との互換性を得る前に更新が必要になります。

3
Gokhan Sari

同じ問題がありました。ビルドスキームからアプリのテストターゲットを削除することで解決しました。

この手順は私の問題の解決に役立ちました。 「ビルドの並列化のチェックを外す」手順を試しました。私にはうまくいきませんでした。

  1. XCodeでプロジェクトを開きます。
  2. ライブラリフォルダーを開きます。 React.xcodeprojといくつかのRCT * .xcodeprojが表示されます。
  3. React.xcodeprojを他の各プロジェクトにドラッグします。
  4. 各プロジェクトをクリックして、[ビルドフェーズ]タブに移動します。
  5. [ターゲットの依存関係]をクリックして、Reactをターゲットの依存関係として追加します
1

ポッドを使用している場合は、このソリューションを試すことができます。

ヘッダー検索パスに移動:Pods -> TARGETS -> (YOUR TARGET, like my target is RNGL) -> Build Settings -> All -> Search Paths -> Header Search Paths

パスを追加:"${PODS_ROOT}/Headers/Public/React"非再帰的

1
Xiely_Viomi

アプリが大きくない場合は、

1) rename original app
2) create the same app again react-native init <orig_app_name>
3) copy over all necessary files from your original app to the newly created one
4) adjust the package.json
5) npm install
6) react-native run-<ios|Android>

新しいライブラリをリンクする場所を見つけるのに何時間も費やしましたが、それは少なくとも貴重な選択肢であり、ショートカットでした。

それが誰かを助けることを願って

1
radosch

これがどのように機能したかです:

  • Package.jsonを最新バージョンにクリーンアップし、
  • @ max23_でトリックをやった
  • エラーを引き起こしていたすべての#import '....h'を対応する#import <React/.....h>に置き換えました。
0
Romain Aymard

から更新

import "RCT/BridgeModule.h"

import "React/RCT/BridgeModule.h"

クリーンとビルド。

私はそれをテストしていませんが、変更を加えずにクリーンアップしてビルドするだけでうまくいくと思います。

0
RedEarth

次からのパスの変更:

#import <React/RCTBridgeModule.h>

に:

#import <React/Base/RCTBridgeModule.h>

私のために働いた。