web-dev-qa-db-ja.com

React-native / iOSアプリ:モジュール 'SquareInAppPaymentsSDK'が見つかりませんが、プロジェクトに追加されています

詳細については

問題の要約

  • 私が抱えている問題は、Xcodeで反応ネイティブパッケージ( react-native-square-in-app-payments )を構成したことですが、「module xxx not見つかった」。

質問は:

  • Xcodeが「不足している」モジュールを見つけられないのはなぜですか?何が正しく設定されていませんか?どこを確認すればよいですか?

エラーは次のとおりです

Module 'SquareInAppPaymentsSDK' not found

enter image description here

私のポッドファイル:

platform :ios, '11.0'

target 'myproject' do
  use_frameworks!

  pod 'React', :path => '../node_modules/react-native'
  pod 'yoga', :path => '../node_modules/react-native/ReactCommon/yoga'
  pod 'DoubleConversion', :podspec => '../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec'
  pod 'glog', :podspec => '../node_modules/react-native/third-party-podspecs/glog.podspec'
  pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec'

  pod 'RNSquareInAppPayments', :path => '../node_modules/react-native-square-in-app-payments'

  post_install do |installer|
    installer.pods_project.targets.each do |target|
      if target.name == 'React'
        target.remove_from_project
      end
    end
  end

end

私のproject.pbxprojファイル(ここでは添付できませんでしたが、githubでアクセスできます):

https://github.com/square/in-app-payments-react-native-plugin/issues/66#issuecomment-625333601

更新:以下のリンク(最初のコメントと@DenisTsoiの回答に続く)

私は自動リンクを試みました(前述のように、RN 0.59.9を使用しているのでそれが必要です)、それからもう一度開始して手動リンクを試みましたが、どちらも同じエラーが発生しています。これに関する私のコメントは https://github.com/square/in-app-payments-react-native-plugin/issues/66#issuecomment-62533021 で確認できます。

ところで、「ライブラリとバイナリをリンク」の下に、パッケージの2つのエントリがあります。

以下の@MuhammadNumanの回答にコメントしてください。

新しいreact-nativeプロジェクト(react-initで作成)でpodfileを試しました。追加したとき

import { SQIPCore } from 'react-native-square-in-app-payments';

https://github.com/square/in-app-payments-react-native-plugin/issues/66#issuecomment-62976261 で説明されているエラーが発生します

私のリポジトリは https://github.com/rahamin1/square_with-podfile にあります

4
Yossi

あなたのgithub issueリンクによると、

あなたは反応0.59.xを実行しています。つまり、実行する必要があります

react-native link

IOS XCodeでリンクされるネイティブライブラリ用。

別の方法は、XCodeの依存関係をリンクすることです。これは、reactネイティブ docs にあります。

抜粋

ステップ1ライブラリにネイティブコードがある場合、そのフォルダー内に.xcodeprojファイルが必要です。このファイルをXcodeのプロジェクト(通常はXcodeのLibrariesグループの下)にドラッグします。

step 1

ステップ2メインプロジェクトファイル(.xcodeprojを表すファイル)をクリックして[ビルドフェーズ]を選択し、静的ライブラリを、インポートするライブラリ内のProductsフォルダーからライブラリとバイナリをリンクにドラッグします。

step 2

ステップ3すべてのライブラリーがこのステップを必要とするわけではありません。考慮する必要があるのは、コンパイル時にライブラリーの内容を知る必要があるかどうかです。つまり、このライブラリをネイティブ側で使用していますか、それともJavaScriptのみで使用していますか? JavaScriptでのみ使用する場合は、準備完了です。ネイティブから呼び出す必要がある場合は、ライブラリのヘッダーを知る必要があります。これを行うには、プロジェクトのファイルに移動する必要があります。ビルド設定を選択し、ヘッダー検索パスを検索します。そこでライブラリへのパスを含める必要があります。 (このドキュメントは、再帰的な使用を推奨するために使用されましたが、特にCocoaPodsで微妙なビルドエラーを引き起こす可能性があるため、これは推奨されなくなりました。)

step 3

RN 0.60+の場合、リンクは自動的に行われます。

編集:

ディレクトリ<YOUR_PROJECT_DIRECTORY>/iosのコマンドを使用して、cocoapodsでSDKをインストールすることもできます

pod install
2
Denis Tsoi

react-native 0.59.9のボイラープレートを複製してテストすることもできます

https://github.com/nomi9995/in-app-payments-0.59.9.git

ポッドファイルを変更する

platform :ios, '11.1'

target 'myproject' do
  use_frameworks!

  rn_path = '../node_modules/react-native'
  pod 'React', path: rn_path, subspecs: [
  'CxxBridge',
  'RCTText',
  'RCTNetwork',
  'RCTWebSocket',
  'RCTAnimation',
  'RCTActionSheet',
  'RCTGeolocation',
  'RCTImage',
  'RCTSettings',
  'RCTVibration',
  'RCTLinkingIOS'
  ]
  pod 'yoga', :path => "#{rn_path}/ReactCommon/yoga"
  pod 'DoubleConversion', :podspec => '../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec'
  pod 'glog', :podspec => '../node_modules/react-native/third-party-podspecs/glog.podspec'
  pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec'

  pod 'RNSquareInAppPayments', :path => '../node_modules/react-native-square-in-app-payments'


end

そしてpodfileを再インストールします

pod install
1
Muhammad Numan