创建具有Pod依赖项的Flutter插件

时间:2019-03-05 11:45:25

标签: flutter flutter-dependencies flutter-plugin

我创建了一个具有“ FacebookShare”依赖项的flutter插件。 我的广告连播规格如下:

Pod::Spec.new do |s|
  s.name             = '{plugin name}'
  s.version          = '0.0.2'
  s.summary          = 'A new Flutter plugin for share image and text in social media'
  s.description      = <<-DESC A new Flutter plugin for share image and text in social media
                       DESC
  s.homepage         = 'https://github.com/jayarajm/flutter_share_social_media.git'
  s.license          = { :file => '../LICENSE' }
  s.author           = { '...' => '...' }
  s.source           = { :path => '.' }
  s.source_files = 'Classes/**/*'
  s.public_header_files = 'Classes/**/*.h'
  s.dependency 'Flutter'
  s.dependency 'FacebookShare'

  s.ios.deployment_target = '8.0'
  s.static_framework = true
end

在示例项目中,插件引用了本地路径。因此,我没有安装Pod或运行项目的任何问题。 发布到“ https://pub.dartlang.org/”之后。

我尝试在项目中的dart包中使用,安装pod时遇到问题。我在下面附上了错误,

CocoaPods' output:
↳
      Preparing
    Analyzing dependencies
    Inspecting targets to integrate
      Using `ARCHS` setting to build architectures of target `Pods-Runner`: (``)
    Fetching external sources
    -> Fetching podspec for `Flutter` from `.symlinks/flutter/ios`
    -> Fetching podspec for `flutter_share_social_media` from `.symlinks/plugins/flutter_share_social_media/ios`
    Resolving dependencies of `Podfile`
    Comparing resolved specification to the sandbox manifest
      A Bolts
      A FBSDKCoreKit
      A FBSDKShareKit
      A FacebookCore
      A FacebookShare
      A Flutter
      A flutter_share_social_media
    Downloading dependencies
    -> Installing Bolts (1.9.0)
      > Copying Bolts from `/Users/jayaraj_m/Library/Caches/CocoaPods/Pods/Release/Bolts/1.9.0-ac656` to `Pods/Bolts`
    -> Installing FBSDKCoreKit (4.40.0)
      > Copying FBSDKCoreKit from `/Users/jayaraj_m/Library/Caches/CocoaPods/Pods/Release/FBSDKCoreKit/4.40.0-ae214` to `Pods/FBSDKCoreKit`
    -> Installing FBSDKShareKit (4.40.0)
      > Copying FBSDKShareKit from `/Users/jayaraj_m/Library/Caches/CocoaPods/Pods/Release/FBSDKShareKit/4.40.0-0e459` to `Pods/FBSDKShareKit`
    -> Installing FacebookCore (0.5.0)
      > Copying FacebookCore from `/Users/jayaraj_m/Library/Caches/CocoaPods/Pods/Release/FacebookCore/0.5.0-74288` to `Pods/FacebookCore`
    -> Installing FacebookShare (0.5.0)
      > Copying FacebookShare from `/Users/jayaraj_m/Library/Caches/CocoaPods/Pods/Release/FacebookShare/0.5.0-963b4` to `Pods/FacebookShare`
    -> Installing Flutter (1.0.0)
    -> Installing flutter_share_social_media (0.0.2)
      - Running pre install hooks
    [!] The following Swift pods cannot yet be integrated as static libraries:
    The Swift pod `FacebookCore` depends upon `Bolts` and `FBSDKCoreKit`, which do not define modules. To opt into those targets generating module maps (which is necessary to import them from Swift when building as static libraries), you may set `use_modular_headers!` globally in your Podfile, or specify `:modular_headers => true` for particular dependencies.
    The Swift pod `FacebookShare` depends upon `Bolts`, `FBSDKCoreKit`, and `FBSDKShareKit`, which do not define modules. To opt into those targets generating module maps (which is necessary to import them from Swift when building as static libraries), you may set `use_modular_headers!` globally in your Podfile, or specify `:modular_headers => true` for particular dependencies.
    The Swift pod `flutter_share_social_media` depends upon `Bolts`, `FBSDKCoreKit`, and `FBSDKShareKit`, which do not define modules. To opt into those targets generating module maps (which is necessary to import them from Swift when building as static libraries), you may set `use_modular_headers!` globally in your Podfile, or specify `:modular_headers => true` for particular dependencies.
    /usr/local/lib/ruby/gems/2.5.0/gems/cocoapods-1.5.3/lib/cocoapods/installer/xcode/target_validator.rb:135:in `verify_swift_pods_have_module_dependencies'
    /usr/local/lib/ruby/gems/2.5.0/gems/cocoapods-1.5.3/lib/cocoapods/installer/xcode/target_validator.rb:38:in `validate!'
    /usr/local/lib/ruby/gems/2.5.0/gems/cocoapods-1.5.3/lib/cocoapods/installer.rb:415:in `validate_targets'
    /usr/local/lib/ruby/gems/2.5.0/gems/cocoapods-1.5.3/lib/cocoapods/installer.rb:118:in `install!'
    /usr/local/lib/ruby/gems/2.5.0/gems/cocoapods-1.5.3/lib/cocoapods/command/install.rb:41:in `run'
    /usr/local/lib/ruby/gems/2.5.0/gems/claide-1.0.2/lib/claide/command.rb:334:in `run'
    /usr/local/lib/ruby/gems/2.5.0/gems/cocoapods-1.5.3/lib/cocoapods/command.rb:52:in `run'
    /usr/local/lib/ruby/gems/2.5.0/gems/cocoapods-1.5.3/bin/pod:55:in `<top (required)>'
    /usr/local/bin/pod:23:in `load'
    /usr/local/bin/pod:23:in `<main>'
Error output from CocoaPods:
↳
    [!] `<PBXGroup UUID=`97C146E51CF9000F007C117D`>` attempted to initialize an object with an unknown UUID. `CF3B75C9A7D2FA2A4C99F110` for attribute: `children`. This can be the result of a merge and the unknown UUID is being discarded.
    [!] Automatically assigning platform `ios` with version `8.0` on target `Runner` because no platform was specified. Please specify a platform for this target in your Podfile. See `https://guides.cocoapods.org/syntax/podfile.html#platform`.

1 个答案:

答案 0 :(得分:0)

我遇到了类似的问题,具有相同的输出 <PBXGroup UUID...,就我而言,当我运行 pod install --verbose 时,我意识到在 pod install

期间存在特定错误 <块引用>

#Dir:0x00007ff10befa7f0 的未定义方法 `each_child' 你的意思是?每个_切片

在查找此特定错误时,我发现了此 answer,并且我意识到我使用的是 ruby​​ 2.5,而 Flutter 为 iOS 设备生成的一个文件试图使用版本 2.6 中引入的方法。

按照该答案中的步骤操作后,我可以在 iOS 模拟器上运行我的 Flutter 应用程序。

<块引用>

方法 dir.each_child was introduced in Ruby 2.6,但您使用的是 Ruby 2.3.0。

<块引用>

您应该update Ruby到 2.6.0 或更高版本的 2.x 版本。

<块引用>

Ruby 更新后,您可能还需要重新启动 IDE 和 re-install cocoapods