Xcodeバージョン10.2(10E125)を更新し、デバイス(シミュレータだけでなく)でテストしました
アプリを実行すると、次のメッセージが表示されます。
objc [3297]:Swift上のクラス拡張とカテゴリSwiftクラスは+ loadメソッドを持つことができません
-Swiftクラスの拡張機能を使用していますが、それが問題だとは思いません
CocoapodsとFirebaseの依存関係の使用。
プロジェクトで「ロード」関数を含む可能性のある関数を検索しましたが、見つかりませんでした。
助けてください
Reactネイティブプロジェクトのソリューションを追加するだけです。
この問題は、カスタムの反応ネイティブモジュールの1つがinit
関数を呼び出すRCT_EXPORT_MODULE()
マクロを使用していて、Swiftコードも含めていたために発生しました。反応ネイティブバージョン0.59.3、init
への呼び出しを回避する新しいマクロRCT_EXPORT_MODULE_NO_LOAD(js_name, objc_name)
があります。RCT_EXPORT_MODULE()
をRCT_EXPORT_MODULE_NO_LOAD(js_name, objc_name)
に置き換えて更新ネイティブバージョン0.59.3に対応して問題を修正しました。
私の場合、+ loadメソッドを持つ唯一の依存関係はRxAtomicです。ちなみに、現時点でSwift 5.0に更新されなかったのはこれだけです。そのため、このバグはRxSwiftによって引き起こされたと考えられます。また、Swinjectsの依存関係もありますが、更新されました。 Swift 5をサポートする最新リリースすべて-それは助けにはなりませんでした。
[〜#〜]編集[〜#〜]
ポッドプロジェクトファイルを開くだけです。 RxAtomic Targetを選択します。そして、ユーザー定義プロパティ 'Swift_VERSION'を5.0から4.2に変更します。そしてそれは機能します!!!
現時点ではクイックフィックス:
それが完了したら、プロジェクトを再構築すると、どのデバイスでも問題なく機能します。
問題はSwift 5.に関連していると思います。おそらくすべての依存関係をSwift 5.に更新する必要があります。そうする時間がある。
長い修正:ポッドを更新し、ゆっくりとSwift5に移行します。
さらに問題を引き起こしていたポッドは、SwinjectStoryboardを備えたSwinject、およびRxOptionalでした。
react-nativeバージョンにアップグレード^0.59.5
RCT_EXPORT_MODULE_NO_LOAD
、なしで解決しました
反応ネイティブバージョンを更新するには、
rm -rf node_modules
yarn add react-native@^0.59.5
これにより、他の依存パッケージが新しいバージョンで更新されます
同じ問題があり、ポッドを更新するだけでした。 Swinjectポッドが問題を引き起こしており、最新バージョンに更新した後、すべてが解決されました。ポッドターゲットでSwift言語バージョンを調整してみることもできます。