如何在iOS设备上运行Flutter应用?

时间:2019-12-29 15:09:42

标签: ios flutter

我正在尝试在iOS设备(iPhone XS)上运行新的Flutter应用(由flutter create创建的示例应用)。 Xcode设法安装它,但是随后崩溃,并显示以下消息:

dyld: Library not loaded: @rpath/Flutter.framework/Flutter
  Referenced from: /private/var/containers/Bundle/Application/BA807438-FA5B-4021-B37D-FC437B2C80CA/Runner.app/Runner
  Reason: no suitable image found.  Did find:
    /private/var/containers/Bundle/Application/BA807438-FA5B-4021-B37D-FC437B2C80CA/Runner.app/Frameworks/Flutter.framework/Flutter: code signature invalid for '/private/var/containers/Bundle/Application/BA807438-FA5B-4021-B37D-FC437B2C80CA/Runner.app/Frameworks/Flutter.framework/Flutter'

如果我尝试flutter run,该应用程序也会打开并崩溃。该命令将永远等待:

$ flutter run
Launching lib/main.dart on Ferran Maylinch’s iPhone in debug mode...

Automatically signing iOS for device deployment using specified development team in Xcode project: 25D86TPBWG
Running Xcode build...                                                  

 ├─Assembling Flutter resources...                           4.3s
 └─Compiling, linking and signing...                        13.3s
Xcode build done.                                           21.0s
Installing and launching...                                             
(This is taking an unexpectedly long time.)       ⢿

你知道我该怎么办吗?我遵循macOS instructionsflutter doctor的说法,我拥有iOS所需的一切。

在Xcode中,我配置了一个团队(个人团队),并且签名证书(Apple开发证书)似乎还不错。可以肯定的是,我在设备上安装了Hello world Swift项目,因此证书必须正确。

注意:我没有支付Apple Developer Program的帐户。在iOS设备上运行Flutter应用程序是否绝对必要?

flutter doctor的输出:

[✓] Flutter (Channel stable, v1.12.13+hotfix.5, on Mac OS X 10.15.2 19C57, locale en-ES)

[!] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
    ! Some Android licenses not accepted.  To resolve this, run: flutter doctor --android-licenses
[✓] Xcode - develop for iOS and macOS (Xcode 11.3)
[!] Android Studio (version 3.5)
    ✗ Flutter plugin not installed; this adds Flutter specific functionality.
    ✗ Dart plugin not installed; this adds Dart specific functionality.
[✓] IntelliJ IDEA Ultimate Edition (version 2019.3.1)
[!] VS Code (version 1.41.1)
    ✗ Flutter extension not installed; install from
      https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter
[✓] Connected device (1 available)

! Doctor found issues in 3 categories.

如您所见,我使用稳定通道来丢弃Beta通道的问题,但是我通常在Beta通道中工作,以便为Web构建抖动(效果很好)。

10 个答案:

答案 0 :(得分:9)

编辑:此问题已在3月24日发布的iOS 13.4上修复。

这是与Flutter不相关的iOS 13.3.1回归。通过创建新的Xcode项目,添加框架目标并选择“个人团队配置”配置文件,我能够在没有任何Flutter或CocoaPods代码的情况下重现崩溃。

请参阅GitHub问题:https://github.com/flutter/flutter/issues/49504#issuecomment-581554697

该错误不应影响开发人员帐户团队的配置文件或已在App Store上签名并分发的应用。

不幸的是,唯一的解决方法可能是避免在解决此问题之前将开发设备升级到13.3.1。

答案 1 :(得分:4)

据我所知,这是iOS 13.3.1的Flutter兼容性问题。就我而言,我的应用在运行iOS 13.3的iPhone XR上运行正常,但在运行iOS 13.3.1的另一台iPhone XR上启动时崩溃。由于它是相机应用程序,因此无法在模拟器中进行测试,但可以在物理Android设备和Android模拟器上正常工作。

答案 2 :(得分:2)

  1. 您是否同意xcode许可协议?如果没有,请尝试sudo xcodebuild -license
  2. 您的广告连播有没有更新?如果不是,请导航至终端机flutter项目中的ios文件夹,然后依次输入pod installpod update

如果这不起作用,请转至flutter项目中的ios文件夹,然后双击以打开Runner.xcworkspace。它应该看起来像这样:

enter image description here

打开xcode时,单击左上方的Runner。

enter image description here

然后转到“签名和功能”,然后在“团队”下拉菜单下选择一个字段。如果不存在,请创建一个帐户。

enter image description here

然后在“捆绑包标识符”中,应显示您应用的捆绑包名称。最后添加.app。例如,如果将其“ com.example.yourapp”设为“ com.example.yourapp.app”,然后按Enter。

按左上角的播放按钮可在所选设备上运行该应用。

答案 3 :(得分:2)

您可以一步一步地完成

flutter channel master
flutter upgrade
flutter clean
flutter build ios

答案 4 :(得分:1)

这篇文章不是答案,因为我也在这个问题上苦苦挣扎,因为有一段时间没有修复了,所以写这篇文章

我要提供的是向OP和其他成员提供更多详细信息。 所以我拥有OP所说的一切。

这是我尝试过的:

  1. 未创建Podfile(即使在Simulator等上运行后也是如此),这就是为什么我尝试包括Flutter Github的flutter示例应用程序中的一个。

    • 清除的iOS目录
    • 添加了Podfile
    • Ran pod更新。
    • 固定的警告(为Xcode提供Pod调试和发布配置)
    • 在用户定义的设置中添加了FLUTTER_ROOT(由于缺少),我遇到了Xcode-backend.sh错误(不记得了,对不起)
    • 内置

因此,这些步骤将产生:this在Simulator上出错。与物理设备上没有Pod相同的签名错误

  • 从“钥匙串访问”中删除所有证书,并通过Xcode还原它们。

    结果:没有任何改变

  • 删除了Xcode,Pod及其相关设置。删除的证书。重启后还原所有内容(全新安装)

    结果:同样,也不能使用pod进行构建,也不能提供相同错误

  • 我已将Flutter升级到开发频道(1.14.1),并使用flutter create .

    重新生成了项目

    重新构建。有和没有豆荚。还是一样

  • 我还尝试过在所有目标(包括Pod)上将签名从Apple Developer更改为iOS Developer

    在此我遇到了一些错误,因为我什至尝试签署Pods-Runner(有一点希望)。但是总体上没有新内容。

  • 当我在iOS 13.3.1 Beta上运行设备时,我将Target升级到13.2(现在最大可用吗?)。

    不是

  • 我已启用macOS构建并构建了Mac应用

    它按预期运行,一切都很好。

总结:

  • 此问题不取决于Pod / Non-Pod项目。
  • 在最新稳定的开发者和最新开发者之间(在撰写本文时),在此问题上没有任何改变
  • 此错误无法通过重新安装Xcode来解决,并且与钥匙串证书无关
  • 仅在仅针对物理iOS设备(在我的情况下为iPhone X)构建时弹出问题。模拟器(没有Pod)运行良好。

顺便说一句。一切都在装有Catalina 10.15.3和Xcode 11.3.1的MacBook Pro 13上运行。

每次运行都带有-v标志,并且在构建s期间未在日志中发现任何可疑的东西

再次。很抱歉,如果我在发布此帖子时做错了什么,但由于此帖子很长,我不想重复此问题或建议进行修改,

答案 5 :(得分:0)

尝试通过flutter channel stable切换到稳定频道,执行flutter upgrade,然后导航到应用项目并运行flutter run

答案 6 :(得分:0)

只需在Debug模式下运行该应用程序,不需要任何Apple付费帐户。 1)打开该项目的xCode,然后选择设备并在其中运行。

打开该项目的XCode并检查“构建设置”,因为存在FLUTTER_ROOT路径正确,如果没有,请创建flutter根目录并提供路径。

答案 7 :(得分:0)

打开Xcode,然后单击Product -> Clean或(CMD-Shift-K)。如果这样做不起作用,请尝试执行以下操作:https://macpaw.com/how-to/clear-xcode-cache

如果这还是行不通的,请告诉我。

答案 8 :(得分:0)

您是否选中了此链接,该链接可能会为您提供所需的输出https://github.com/flutter/flutter/issues/16507。 让我知道是否有效 可能是它的签名问题,这篇文章将让您知道发生了什么问题。 谢谢

答案 9 :(得分:0)

这不是理想的解决方案,但以下方法对我有用。

  1. 将设备升级到 iOS 13.4 beta。
  2. 进行颤动
  3. 构建应该成功。
  4. 它将引发“您的Xcode版本可能对于您的iOS版本而言太旧了” 错误。
  5. 该应用程序已安装在设备上。 注意:该过程终止后,应用程序将不会自动启动。
  6. 单击设备上已安装的应用程序图标以启动应用程序。

尽管如此,您将无法在调试窗口中看到任何内容,因为该过程在引发错误后终止。在我们获得下一个Xcode更新之前,这不是理想的解决方案,但绝对是一种解决方法。