yoomoney / yookassa-payments-swift

This library allows implementing payment acceptance into mobile apps on iOS and works as an extension to the YooMoney API
https://yookassa.ru/developers
MIT License
41 stars 41 forks source link

Cannot load underlying module for 'FunctionalSwift' #77

Closed pedrogarciyalopez closed 3 years ago

pedrogarciyalopez commented 4 years ago

Здравствуйте. Приложение на react-native, была прикручена версия yandex-checkout-payments-swift 3.1.0 и все работало. Из-за конфликта с iOS 14 SDK (Ошибка - Компиляция с учетом iOS 14 SDK #65) затеял миграцию на 4.0.0. Все делаю по инструкции, сборка рушится с такими ошибками:

Снимок экрана 2020-10-27 в 22 35 20

Podfile такой: use_frameworks! использовать не могу, ибо react-native и отсюда вытекающие проблемы.

require_relative '../node_modules/react-native/scripts/react_native_pods'
require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'
source 'https://github.com/CocoaPods/Specs.git'
source 'https://github.com/yandex-money-tech/cocoa-pod-specs.git'

platform :ios, '10.0'
install! 'cocoapods', :disable_input_output_paths => true

target  'targetName' do
  config = use_native_modules!

  use_react_native!(:path => config["reactNativePath"])

  pod 'react-native-netinfo', :path => '../node_modules/@react-native-community/netinfo'

  pod 'react-native-geolocation', :path => '../node_modules/@react-native-community/geolocation'

  pod 'YandexCheckoutPayments',
  :git => 'https://github.com/yandex-money/yandex-checkout-payments-swift.git',
  :tag => '4.0.0'

  pod 'RNVectorIcons', :path => '../node_modules/react-native-vector-icons'

  target 'targetNameTests' do
    # inherit! :complete
    # Pods for testing
  end

  # Enables Flipper.
  #
  # Note that if you have use_frameworks! enabled, Flipper will not work and
  # you should disable these next few lines.
  use_flipper!
  post_install do |installer|
    flipper_post_install(installer)
  end
end

Как быть? В какую сторону копать?

pedrogarciyalopez commented 4 years ago

Проблему удалось решить с помощью плагина cocoapods-user-defined-build-types. Подробности по ссылке, здесь коротко, если вдруг кто-то столкнется с подобным:

1. Убираем из Podfile use_frameworks!, если есть

2. Инсталим плагин

$ gem install cocoapods-user-defined-build-types

3. В Podfile сверху добавляем 2 строки

plugin 'cocoapods-user-defined-build-types'

enable_user_defined_build_types!

4. Сразу после pod 'YandexCheckoutPayments', добавляем :build_type => :dynamic_framework, должно получиться так:

pod 'YandexCheckoutPayments',
:build_type => :dynamic_framework,
:git => 'https://github.com/yandex-money/yandex-checkout-payments-swift.git',
:tag => '4.0.0'

Важный момент: :build_type => :dynamic_framework, надо вставить сразу после pod 'YandexCheckoutPayments', иначе, если вставить например после :tag => '4.0.0', будет ошибка, подробнее здесь: Invalid 'Podfile' could not parse a build_type

5 В терминале:

pod deintegrate - наверное можно не делать, но я сделал

pod install

После этого в Xcode проект должен нормально собраться, если нет еще каких-то ошибок :)

oltv00 commented 3 years ago

@pedrogarciyalopez Круто! Спасибо за решение. Мы его протестируем с разными кейсами и добавим в README.md