Xcode 12.5への移行方法 質問する

Xcode 12.5への移行方法 質問する

Xcode 11 を使用して正しくビルドされた React Native プロジェクトを、Xcode 12.5 を使用してビルドできません。

Xcode の最新バージョンにのみ、TestFlight およびアプリ ストアに公開/アップロードするために必要な API が搭載されているため、Xcode 11 は使用できなくなりました。

ここで、3 つのビルド エラーが発生します。

Cannot initialize a parameter of type 'NSArray<id<RCTBridgeModule>> *' with an rvalue of type 'NSArray<Class> *'

Cannot initialize a parameter of type 'NSArray<id<RCTBridgeModule>> *' with an rvalue of type 'NSArray<Class> *'

Cannot initialize a parameter of type 'NSArray<id<RCTBridgeModule>> *' with an rvalue of type 'NSArray<Class> *'

また、デプロイメント ターゲットが 10 および 9 から自動的にアップグレードされたことにも気付きました。

- IPHONEOS_DEPLOYMENT_TARGET = 9.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 12.1;

Clang に関連するいくつかの新しいプロパティが追加されました:

+ CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;

Xcode 12.5 を使用してこのアプリをデプロイするようにプロジェクトを構成するにはどうすればよいですか?

$ react-native info info システムとライブラリの情報を取得しています... システム: OS: macOS 11.3 CPU: (4) x64 Intel(R) Core(TM) i3-8100B CPU @ 3.60GHz メモリ: 256.45 MB / 8.00 GB シェル: 3.2.57 - /bin/bash バイナリ: Node: 10.16.0 - /usr/local/bin/node Yarn: 1.21.1 - ~/npm-global/bin/yarn npm: 6.9.0 - /usr/local/bin/npm Watchman: 4.9.0 - /usr/local/bin/watchman SDK: iOS SDK: プラットフォーム: iOS 14.5、DriverKit 20.4、macOS 11.3、tvOS 14.5、watchOS 7.4 IDE: Xcode: 12.5/12E262 - /usr/bin/xcodebuild npmPackages: react: ^16.11.0 => 16.12.0 react-native: 0.61.4 => 0.61.4 npmGlobalPackages: react-native-cli: 2.0.1

ベストアンサー1

私は、React モジュール RCTCxxBridge.mm のパラメータ キャストを次のように変更することでこれを修正しました。

- (NSArray<RCTModuleData *> *)_initializeModules:(NSArray<id<RCTBridgeModule>> *)modules
                               withDispatchGroup:(dispatch_group_t)dispatchGroup
                                lazilyDiscovered:(BOOL)lazilyDiscovered

に:

- (NSArray<RCTModuleData *> *)_initializeModules:(NSArray<Class> *)modules
                               withDispatchGroup:(dispatch_group_t)dispatchGroup
                                lazilyDiscovered:(BOOL)lazilyDiscovered

私は 0.59 を実行しており、CocoaPods を使用していませんが、基本的な修正は次の形式のキャストです。

NSArray<id<RCTBridgeModule>> *)modules

次のように置き換える必要があります:

NSArray<Class> *)modules

おすすめ記事