iOS
React
reactnative

【React Native】iOS アーカイブでエラー 備忘録【CocoaPods】

More than 1 year has passed since last update.

経緯

今までビルド通ってて、申請しようと思ったけども、アーカイブした時だけなぜかエラーが起こったのでその時の対処法。あんまり大した内容ではないですが、忘れたくないので・・・。
原因はCocoaPodsにありました。

状況

エミュレーター、実機でも、debug, releaseでも正常に動いてたけど、アーカイブしたらダメでした。

_JSNoBytecodeFileFormatVersion, referenced from
...
facebook::react::parseTypeFromHeader()
...
symbol(s) not found for architecture x86_64

といった感じののエラーが出ました。

調べてみたらRN 0.46以上は、PodFileにBatchBridgeを追加しなきゃいけないみたいで、

pod "React", :path => react_native_path, :subspecs => [
    .....
    'Core',
    'BatchedBridge'
  ]

こんな感じにしてpod updateで解決。

次の問題

480 duplicate symbols for architecture arm64

という感じでエラーが出てきたのです。

ネイティブエンジニアの方と話ながら、podInstallに余分なものが含まれすぎているということに行き着きました。
たしかにPodInstallには色々はいってて、"RCTXX"といったRN系のものも多く入っていたし、あとで入れてきてたネイティブ系のライブラリもたくさん入ってた。
ので試しに色々削ってみることにしました。

削る度にduplicationの数が減っていき、最終的に

pod "React", :path => react_native_path, :subspecs => [
    'Core',
    'BatchedBridge'
  ]

でおちつきました。

 終えてみて

正直うごいているから大丈夫と思ってきたけどもここでひっかかることになるとは思ってもみなかったです。

色々と経験してみて、RNエンジニアとネイティブのエンジニアってドメイン被ってるようで被ってなかったりして、独特の知識が必要だなと改めて気づきました。
ブリッジの部分弄ったりとかするときもRN固有の知識がいるのだとも感じてたりして、もっとネイティブ側の知識もないといけないなぁと思うこの頃でした。