Flutter: Cocoapods Цель «Pods-Runner» имеет транзитивные зависимости, которые включают статические двоичные файлы: Flutter.framework

Я получаю эту ошибку при запуске pod install

[!] The 'Pods-Runner' target has transitive dependencies that include static binaries: (/Users/me/Documents/flutter/flutter/bin/cache/artifacts/engine/ios/Flutter.framework)

После небольшого исследования выяснилось, что use frameworks! в моем Podfile вызывает проблему. Если я закомментирую use frameworks!, я получу эту ошибку. Есть идеи, в чем проблема? Я застрял здесь последние три дня.

ld: framework not found Flutter
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Также согласно тому, что написано здесь. Добавление следующего к Podfile также не сработало для меня. Вот так выглядит мой Podfile.

# Uncomment this line to define a global platform for your project
# platform :ios, '9.0'

# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'

def parse_KV_file(file,seperator='=')
  file_abs_path = File.expand_path(file)
  if !File.exists? file_abs_path
    return [];
  end
  pods_ary = []
  skip_line_start_symbols = ["#", "/"]
  File.foreach(file_abs_path) { |line|
      next if skip_line_start_symbols.any? { |symbol| line =~ /^\s*#{symbol}/ }
      plugin = line.split(pattern=seperator)
      if plugin.length == 2
        podname = plugin[0].strip()
        path = plugin[1].strip()
        podpath = File.expand_path("#{path}", file_abs_path)
        pods_ary.push({:name => podname,:path=>podpath});
      else
        puts "Invalid plugin specification: #{line}"
      end
  }
  return pods_ary
end

target 'Runner' do
  # Flutter Pods
  #use_frameworks!

  pod 'EstimoteSDK'
  pod 'SwiftKeychainWrapper'
  pod 'Alamofire'

  generated_xcode_build_settings = parse_KV_file("./Flutter/Generated.xcconfig")
  if generated_xcode_build_settings.empty?
    puts "Generated.xcconfig must exist. If you're running pod install manually, make sure flutter build or flutter run is executed once first."
  end
  generated_xcode_build_settings.map{ |p|
    if p[:name]=='FLUTTER_FRAMEWORK_DIR'
      pod 'Flutter', :path => p[:path]
    end
  }

  # Plugin Pods
  plugin_pods = parse_KV_file("../.flutter-plugins")
  plugin_pods.map{ |p|
    pod p[:name], :path => File.expand_path("ios",p[:path])
  }
end

pre_install do |installer|
      # workaround for https://github.com/CocoaPods/CocoaPods/issues/3289
      Pod::Installer::Xcode::TargetValidator.send(:define_method, :verify_no_static_framework_transitive_dependencies) {}
end

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['ENABLE_BITCODE'] = 'NO'
    end
  end
end

person Chaythanya nair    schedule 12.05.2018    source источник
comment
Привет, Чатанья. Вы поняли, как решить проблему?   -  person Ernesto Campohermoso    schedule 07.09.2018


Ответы (9)


У меня работает полная переустановка флаттера.

person Ernesto Campohermoso    schedule 16.09.2018
comment
не могли бы вы добавить более подробную информацию о том, как точно переустановить флаттер? - person AlexKost; 23.06.2020
comment
Работа flutter upgrade сработала для меня. - person josiebhai; 12.03.2021

Для меня я удалил папку ios/Flutter/Flutter.framework и снова установил pods pod install, после чего все заработало.

person Tugay Yaldiz    schedule 31.03.2020
comment
Это должен быть принятый ответ - person Mr Random; 05.03.2021
comment
Это должен определенно быть принятым ответом - person emirc; 10.03.2021

Удалить папку ios/Flutter/Flutter.framework.

Установите стручки снова, тогда это сработало. Он восстановит удаленную папку

pod install

person Talha Rasool    schedule 09.06.2020
comment
Спасибо большое - person Mohammed Hassan; 11.05.2021

Этот процесс решает это для меня:

  1. Удалить папку ios/Flutter/Flutter.framework.
  2. Удалить ios/PodFile
  3. Удалить ios/PodFile.lock
  4. Перейдите в корень проекта и повторно сохраните файл pubspec.yaml (в VSCode это автоматически запустит следующую команду: flutter get pub)
  5. Запустите проект снова

Дайте мне знать, если это работает и для вас

person Nehemie    schedule 05.12.2020
comment
Не работает для меня - person Abbas; 27.02.2021

Удалите папку ios/Flutter/Flutter.framework. Установите стручки снова, тогда это сработало. Он восстановит удаленную папку pod install.

person Hubert IT    schedule 16.09.2020
comment
Правильное решение. Спасибо - person Luca Iaconelli; 30.09.2020

Почему это происходит - это значит, что вы используете третью статическую библиотеку при создании приватных компонентов. Чтобы исправить это, .podspec необходимо установить для свойства static_framework значение true. решение состоит в том, чтобы поставщики модулей обновили свои файлы podspecs. следуйте приведенной ниже команде, чтобы обновить podspec

Как я в итоге это исправил:

  1. Перейдите в папку /ios/Flutter внутри вашего проекта.
  2. Удалить Flutter.framework
  3. Откройте терминал и перейдите в каталог, содержащий ваш подфайл.
  4. pod install
  5. После завершения перестройте приложение: flutter run

Что делает Podspec

.podspec — это файл, который определяет, как конкретный модуль добавляется в проект. Он поддерживает такие функции, как перечисление исходных файлов, фреймворков, флагов компилятора и любых других зависимостей, которые требуются библиотеке, и это лишь некоторые из них.

person Paresh Mangukiya    schedule 04.11.2020

В вашем подфайле, где вы видите

target 'Runner' do use_frameworks!
comment user_frameworks!

target 'Runner' сделать комментарий ниже строки

use_frameworks!
и перейдите по пути /ios проекта

бежать

установка модуля

person Mir Mahfuz    schedule 23.09.2020

что сработало для меня

  • удалил папку ios/Flutter/Flutter.framework
  • побежал flutter create -i swift --org com.orgname .
  • Я смог запустить приложение без pod install (после этой процедуры)
person Yadu    schedule 01.12.2020

Пожалуйста, проверьте файл ios/project.pbxproj. Мой проект был перемещен в другую папку, и я забыл заменить FLUTTER_TARGET и FLUTTER_APPLICATION_PATH на самые новые в ios/project.pbxproj.

person Akif    schedule 22.06.2020