在Flutter上安装`flutter_twitter_login`和`TwitterKit`的问题

时间:2019-04-26 00:27:12

标签: flutter cocoapods

我现在正在尝试将Flutter制作的应用程序构建到iOS上。但是,我遇到了包括所有依赖项在内的问题(如下所示)。当我第一次构建应用程序时,它会运行pod install,并且一切正常,直到它开始运行预安装钩子为止,在该钩子中我收到大量错误消息(如下所示)。我可以告诉我的是flutter_twitter_login存在某种问题(错误消息之一表明有关twitter的问题),并且我的podfile存在问题(错误消息要求我调出一个最小值iOS版本)。另外,如果我尝试再次运行它(更改podfile,以便它不会抱怨最低版本问题),则会给我一个错误,提示它找不到<TwitterKit/TwitterKit.h>(下面的完整错误消息)。

我尝试通过为flutter_twitter_login构建example program来复制此代码,并且它能够使用完全相同的pubspec.yaml构建find。我还注意到在/path/to/project/ios/Pods/TwitterKit/iOS/TwitterKit.framework/Headers/中,没有TwitterKit.h就像错误所说的那样,但是在我复制错误的项目中却存在。

因此,我认为cocoapods如何安装TwitterKit发生了一些问题,并且我抱怨在自动生成的podfile中没有调出最低iOS版本这一事实表明,这是一件很有趣的事情制作。但是,我不确定如何进行调试,因为问题显然与pubspec.yaml无关,因为我拥有的文件可以成功构建其他项目,并且我的理解是podfile直接来自pubspec.yaml

代码段和错误消息

我在pubspec.yaml中有此密码(其他所有内容均来自模板):

dependencies:
  flutter:
    sdk: flutter
  firebase_core: ^0.2.5
  firebase_analytics: ^1.0.4
  http: "^0.11.3+17"
  firebase_auth: 0.6.2+1
  google_sign_in: ^3.2.1
  flutter_twitter_login: "^1.1.0"
  fluttertoast: ^2.0.7
  flutter_svg: ^0.6.1+1

cocoapods运行预安装挂钩时出现大量错误消息:

      - Running pre install hooks
    [!] The 'Pods-Runner' target has transitive dependencies that include static binaries: (/path/to/project/ios/Pods/TwitterKit/iOS/TwitterKit.framework)

    /Library/Ruby/Gems/2.3.0/gems/cocoapods-1.5.3/lib/cocoapods/installer/xcode/target_validator.rb:81:in `block (2 levels) in verify_no_static_framework_transitive_dependencies'
    /Library/Ruby/Gems/2.3.0/gems/cocoapods-1.5.3/lib/cocoapods/installer/xcode/target_validator.rb:73:in `each'
    /Library/Ruby/Gems/2.3.0/gems/cocoapods-1.5.3/lib/cocoapods/installer/xcode/target_validator.rb:73:in `block in verify_no_static_framework_transitive_dependencies'
    /Library/Ruby/Gems/2.3.0/gems/cocoapods-1.5.3/lib/cocoapods/installer/xcode/target_validator.rb:70:in `each'
    /Library/Ruby/Gems/2.3.0/gems/cocoapods-1.5.3/lib/cocoapods/installer/xcode/target_validator.rb:70:in `verify_no_static_framework_transitive_dependencies'
    /Library/Ruby/Gems/2.3.0/gems/cocoapods-1.5.3/lib/cocoapods/installer/xcode/target_validator.rb:36:in `validate!'
    /Library/Ruby/Gems/2.3.0/gems/cocoapods-1.5.3/lib/cocoapods/installer.rb:415:in `validate_targets'
    /Library/Ruby/Gems/2.3.0/gems/cocoapods-1.5.3/lib/cocoapods/installer.rb:118:in `install!'
    /Library/Ruby/Gems/2.3.0/gems/cocoapods-1.5.3/lib/cocoapods/command/install.rb:41:in `run'
    /Library/Ruby/Gems/2.3.0/gems/claide-1.0.2/lib/claide/command.rb:334:in `run'
    /Library/Ruby/Gems/2.3.0/gems/cocoapods-1.5.3/lib/cocoapods/command.rb:52:in `run'
    /Library/Ruby/Gems/2.3.0/gems/cocoapods-1.5.3/bin/pod:55:in `<top (required)>'
    /usr/local/Cellar/cocoapods/1.5.3/libexec/bin/pod:22:in `load'
    /usr/local/Cellar/cocoapods/1.5.3/libexec/bin/pod:22:in `<main>'

Error output from CocoaPods:
↳

    [!] 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`.

找不到TwitterKit.h

Error output from Xcode build:
↳
    ** BUILD FAILED **


Xcode's output:
↳
    /path/to/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_twitter_login-1.1.0/ios/Classes/TwitterLoginPlugin.m:2:9: fatal error: 'TwitterKit/TwitterKit.h' file not found
    #import <TwitterKit/TwitterKit.h>
            ^~~~~~~~~~~~~~~~~~~~~~~~~
    1 error generated.

2 个答案:

答案 0 :(得分:0)

我有一个类似的问题,我在这里找到答案 enter link description here

所以重要的部分是

change #import <TwitterKit/TwitterKit.h> to #import <TwitterKit/TWTRKit.h>
in file TwitterLoginPlugin.m 

之后 转到

flutter_twitter_login.podspec

并添加这两个框架

TwitterKit.framework,TwitterCore.framework

像照片一样 enter image description here

在那之后再次运行pod安装

希望我的问题对我有帮助

答案 1 :(得分:0)

我发现我需要 Xcode 才能找到需要更改才能工作的文件(使用 Android Studio 进行开发)。我所做的是:

  1. 在 Xcode 中打开你的项目

  2. 搜索 TwitterLoginPlugin.m

  3. 在文件顶部找到导入并替换

    #import

#import <TwitterKit/TWTRKit.h>

这允许我的应用程序运行,但是当按下登录按钮时(调用 TwitterLoginPlugin)程序崩溃。正如许多其他关于此事的帖子所提到的,这当然只发生在 iOS 上。 An issue was posted on their GitHub page about this。这就是我找到答案的地方,@Romy 也从其他答案中支持此链接。我目前正在探索解决此问题的另一个宝贵资源是 the TwitterKit GitHub Wiki