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

Ошибка при попытке установить версию 5.0.0 #80

Closed vsevolod-sp closed 3 years ago

vsevolod-sp commented 3 years ago

Добавил в pod file:

pod 'YooKassaPayments',
    :git => 'https://github.com/yoomoney/yookassa-payments-swift.git',
    :tag => '5.0.0'

Далее, при установке ошибка:

Analyzing dependencies
Pre-downloading: `YooKassaPayments` from `https://github.com/yoomoney/yookassa-payments-swift.git`, tag `5.0.0`
[!] Unable to find a specification for `MoneyAuth (~> 2.0.0)` depended upon by `YooKassaPayments`

You have either:
 * mistyped the name or version.
 * not added the source repo that hosts the Podspec to your Podfile.
oltv00 commented 3 years ago

source 'https://github.com/yoomoney-tech/cocoa-pod-specs.git' указан в Podfile ? https://github.com/yoomoney/yookassa-payments-swift#cocoapods

vsevolod-sp commented 3 years ago

Да, забыли указать. Но дальше опять возникла ошибка:

[!] The 'Pods-poetvdushe' target has transitive dependencies that include statically linked binaries: (/Users/vsevolod/Library/Mobile Documents/com~apple~CloudDocs/Data/App/Poeziya/poetvdushe-ios/Pods/MoneyAuth/MoneyAuth.xcframework)

oltv00 commented 3 years ago

@vsevolod-sp Какая версия CocoaPods используется? Установлена ли настройка use_frameworks! в Podfile ?

vsevolod-sp commented 3 years ago
# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'

source 'https://github.com/CocoaPods/Specs.git'
source 'https://github.com/yoomoney-tech/cocoa-pod-specs.git'

target 'poetvdushe' do
  pod 'Alamofire', '~> 4.6.0'
  pod 'SwiftyJSON', '~> 4.2'
  pod 'SQLite.swift', '~> 0.11.5'
  pod 'Toast-Swift', '~> 4.0'
  pod 'Kingfisher', '~> 5.0'
  pod 'XLPagerTabStrip', '~> 8.0'
  pod 'SwiftyVK'
  pod 'FBSDKCoreKit', '~> 5.7.0'
  pod 'FBSDKLoginKit', '~> 5.7.0'
  pod 'MMMaterialDesignSpinner'
  pod 'Firebase/Core'
  pod 'Firebase/Analytics'
  pod 'FormattedTextField'
  pod 'Google-Mobile-Ads-SDK'
  pod 'Charts'
  pod 'Texture'
  pod 'MaterialComponents/BottomSheet'
  pod 'CameraManager', '~> 4.4'
  pod 'UITextView+PlaceholderExt
  pod 'SwiftyStoreKit'
  pod 'CircleProgressView', '~> 1.0'
  pod 'YooKassaPayments',
    :git => 'https://github.com/yoomoney/yookassa-payments-swift.git',
    :tag => '5.0.0'
  pod 'SwiftEventBus', 
    :git => 'https://github.com/cesarferreira/SwiftEventBus.git',
    :tag => '3.0.1'
  use_frameworks!

  # Pods for poetvdushe

end
oltv00 commented 3 years ago

@vsevolod-sp А версия CocoaPods какая? Для того чтобы это узнать нужно в директории с проектом в консоли выполнить pod --version

Если версия ниже 1.10.0, попробуйте обновить. gem install cocoapods

KirillovE commented 3 years ago

Похожая проблема при попытке установки версий 5.0.0 и 5.0.1. Версия cocoapods указана в Gemfile – 1.10.0

[!] Unable to find a specification for `YooMoneyCoreApi (~> 1.9.0)` depended upon by `YooKassaPayments`

You have either:
 * out-of-date source repos which you can update with `pod repo update` or with `pod install --repo-update`.
 * mistyped the name or version.
 * not added the source repo that hosts the Podspec to your Podfile.
oltv00 commented 3 years ago

@KirillovE Необходимо проверить что в Podfile указан source 'https://github.com/yoomoney-tech/cocoa-pod-specs.git'

далее выполнить команду pod install --repo-update

KirillovE commented 3 years ago

Спасибо, установить удалось. Но теперь есть несколько ошибок

.../Build/Products/Debug-iphonesimulator/XCFrameworkIntermediates/MoneyAuth/MoneyAuth.framework/Modules/MoneyAuth.swiftmodule/x86_64-apple-ios-simulator.swiftinterface:10:8: Compiling for iOS 10.0, but module 'FunctionalSwift' has a minimum deployment target of iOS 11.0: /Users/evgenij/Library/Developer/Xcode/DerivedData/WorkZilla-aunoefbzmvnmfieepnnvtqbxqupu/Build/Products/Debug-iphonesimulator/FunctionalSwift/FunctionalSwift.framework/Modules/FunctionalSwift.swiftmodule/x86_64-apple-ios-simulator.swiftmodule
.../Pods/YooKassaPayments/YooKassaPayments/Private/Services/Authorization/AuthorizationMediator.swift:3:8: Failed to build module 'MoneyAuth' from its module interface; the compiler that produced it, 'Apple Swift version 5.1.3 (swiftlang-1100.0.282.1 clang-1100.0.33.15)', may have used features that aren't supported by this compiler, 'Apple Swift version 5.3.1 (swiftlang-1200.0.41 clang-1200.0.32.8)'
.../Build/Products/Debug-iphonesimulator/YooKassaPayments/YooKassaPayments.framework/Modules/module.modulemap:9:12: Header 'YooKassaPayments-Swift.h' not found
Could not build Objective-C module 'YooKassaPayments'
oltv00 commented 3 years ago

@KirillovE

  1. use_frameworks! используется в Podfile ?
  2. Есть ли в Podfile post_install секция с установкой IPHONEOS_DEPLOYMENT_TARGET ?

Если на 1 ответ - нет, на текущий момент нужно это прописывать, или можно попробовать воспользоваться решением из https://github.com/yoomoney/yookassa-payments-swift/issues/77

Если на 2 ответ - да, то нужно проверить какая версия выставляется. Если больше 10.0, то можно попробовать расширить эту секцию таким образом. На текущий момент - решение такое. В будущем мы планируем починить подобные "костыли".

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|

      if target.name == 'FunctionalSwift' || target.name == 'YooMoneyCoreApi'
        config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '10.0'
      else
        config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.0'
      end

    end
  end
end
KirillovE commented 3 years ago

@oltv00

  1. Да
  2. Есть секция с удалением:
post_install do |installer_representation|
    installer_representation.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
            config.build_settings.delete 'IPHONEOS_DEPLOYMENT_TARGET'
            config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = 'arm64'
        end
    end
end

Минимальная версия для проекта – iOS 11 Попробую Ваше предложение с проверкой условия

vsevolod-sp commented 3 years ago

@vsevolod-sp А версия CocoaPods какая? Для того чтобы это узнать нужно в директории с проектом в консоли выполнить pod --version

Если версия ниже 1.10.0, попробуйте обновить. gem install cocoapods

Помогло

KirillovE commented 3 years ago

@KirillovE

  1. use_frameworks! используется в Podfile ?
  2. Есть ли в Podfile post_install секция с установкой IPHONEOS_DEPLOYMENT_TARGET ?

Если на 1 ответ - нет, на текущий момент нужно это прописывать, или можно попробовать воспользоваться решением из #77

Если на 2 ответ - да, то нужно проверить какая версия выставляется. Если больше 10.0, то можно попробовать расширить эту секцию таким образом. На текущий момент - решение такое. В будущем мы планируем починить подобные "костыли".

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|

      if target.name == 'FunctionalSwift' || target.name == 'YooMoneyCoreApi'
        config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '10.0'
      else
        config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.0'
      end

    end
  end
end

Второй совет помог. А также инструкция по миграции на четвёртую версию

Спасибо, теперь проект запускается. Похоже, можно закрывать обсуждение

KirillovE commented 3 years ago

@oltv00 теперь другая проблема. Не знаю, стоит ли открывать новый issue, поэтому напишу здесь

Проект успешно собирается и запускается. Но UI тесты работать отказываются:

UITests-Runner[52424:1126689] Running tests...
UITests-Runner[52424:1126689] The bundle “UITests” couldn’t be loaded because it is damaged or missing necessary resources. Try reinstalling the bundle.
UITests-Runner[52424:1126689] (dlopen_preflight(/Users/evgenij/Library/Developer/Xcode/DerivedData/WorkZilla-aunoefbzmvnmfieepnnvtqbxqupu/Build/Products/Variant-NoSanitizers/Tests-iphonesimulator/UITests-Runner.app/PlugIns/UITests.xctest/UITests): Library not loaded: @rpath/TMXProfiling.framework/TMXProfiling
  Referenced from: /Users/evgenij/Library/Developer/Xcode/DerivedData/WorkZilla-aunoefbzmvnmfieepnnvtqbxqupu/Build/Products/Variant-NoSanitizers/Tests-iphonesimulator/UITests-Runner.app/PlugIns/UITests.xctest/Frameworks/MoneyAuth.framework/MoneyAuth
  Reason: image not found)

Фреймворки TMXProfiling и TMXProfilingConnections добавлены в основной таргет и помечены "Embed & Sign"

KirillovE commented 3 years ago

Решил проблему, изменив Podfile, исключил эту библиотеку из тестового таргета. Теперь всё работает. Ещё раз спасибо @oltv00 за помощь

daineal commented 3 years ago

@oltv00 может быть рано еще закрывать тред? Нужно описать, как запускать UI тесты вместе с библиотекой. Например, я после удаления библиотеки из тестового таргета, все равно столкнулся с ошибкой при запуске тестов