Skip to content

Xcode 15.3ビルドエラー「Called object type 'facebook:🐬:SocketCertificateProvider' is not a function or function pointer」の解決法

Xcode 15.3でReact Nativeアプリ(react-native v0.71.8)のビルド時に発生する以下のエラーについて、効果的な解決策を解説します:

"Called object type 'facebook:🐬:SocketCertificateProvider' is not a function or function pointer."

このエラーは主にFlipperライブラリとXcode 15.3の互換性問題に起因し、iOSシミュレーター上でのビルドを阻害します。

根本原因

<functional>ヘッダー不足によるC++関数ポインタの型解決エラー

解決方法

🛠️ 方法1: ヘッダーファイルに<functional>を直接追加(暫定対処)

  1. ファイルを開く:
    ios/Pods/Flipper/xplat/Flipper/FlipperTransportTypes.h

  2. 先頭行に以下のコードを追加:

    cpp
    #include <functional>

    (既存のコードの先頭に挿入)

  3. 変更後:

    cpp
    #include <functional> // 追加行
    #include <string>
    #include <vector>
    // ... 既存のコード ...
  4. プロジェクトをクリーンして再ビルド:

    bash
    Product Clean Build Folder Build

注意点

pod install実行時に修正が上書きされる可能性あり

🔧 方法2: Podfileに自動修正スクリプトを追加(恒久対処)

post_installフックを使用して自動修正:

ruby
post_install do |installer|
  installer.pods_project.targets.each do |target|
    if target.name == 'Flipper'
      flipper_file = 'Pods/Flipper/xplat/Flipper/FlipperTransportTypes.h'
      
      # 修正済みかチェック
      unless File.read(flipper_file).include?('#include <functional>')
        content = File.read(flipper_file)
        File.open(flipper_file, 'w') do |file|
          file.puts('#include <functional>')
          file.puts(content)
        end
      end
    end
  end
end

適用手順:

bash
cd ios
pod deintegrate
pod install

🚀 方法3: Flipperバージョンを直接指定(推奨)

PodfileでFlipperを明示的にアップグレード:

ruby
use_flipper!('Flipper' => '0.250.0')

または:

ruby
:flipper_configuration => FlipperConfiguration.enabled(
  ["Debug"], 
  { 'Flipper' => '0.250.0' } # バージョン指定
)

::: success ポイント Flipper v0.250.0以上では本問題が修正されています :::


CI/CD環境での自動修正スクリプト

bash
FILE_PATH="ios/Pods/Flipper/xplat/Flipper/FlipperTransportTypes.h"

if grep -q "#include <functional>" "$FILE_PATH"; then
  echo "修正済み"
else
  # 権限変更と修正適用
  chmod 755 "$FILE_PATH"
  sed -i '' '1s/^/#include <functional>\\n/' "$FILE_PATH"
  echo "修正を適用しました"
fi

補足情報

  1. Flipper完全無効化(非推奨)
    Podfileからuse_flipper!()を除去するとエラーは解消しますが、デバッグ機能が失われます

  2. 互換性検証済み環境

    • react-native: 0.71.x 〜 0.73.x
    • Xcode: 15.3+
    • Flipper: 0.250.0+
  3. 根本的な解決策

    bash
    npx react-native upgrade # React Nativeのアップグレード

本問題はReact Nativeコミュニティで公式に追跡中です。最新情報はGitHub Issue #43335をご確認ください。