在iOS设备上尝试时Flutter签名无效


11

TL; DR

请参阅下面的答案:https : //stackoverflow.com/a/60013390/1121497

看来这是iOS 13.3的问题,因为我刚刚安装了13.4,现在Flutter可以在iPhone上使用了。:)


我正在尝试flutter create在iOS设备(iPhone XS)上运行新的Flutter应用(由创建的示例应用)。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.)

在Xcode中,我配置了一个团队(个人团队),并且签名证书(Apple Development证书)似乎还不错,因为我可以在设备上安装Hello world Swift项目。

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

我遵循了macOS的说明,flutter doctor说我拥有iOS所需的一切:

[] 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的抖动(效果很好)。

在iOS模拟器中,该应用也可以正常运行。

最近我注意到我没有文件ios/Podfile。我发现这篇文章在谈论这一点。我不知道这对我来说是否重要,但是我尝试手动添加此Podfile。无论如何,我得到相同的签名错误。

对此感到沮丧,我现在切换到了NativeScript


您是否正在尝试在真实设备上以调试或发布模式运行它?
Sunkuu19年

@SlahLayouni它处于调试模式。我尝试了发布模式,但失败并出现相同的错误。
Ferran Maylinch,

首先尝试构建版本,然后从xcode作为版本运行它。flutter build ios --release
Sunkuu19年

1)您是否尝试过iOS模拟器2)您是否已在Swift / Xcode中向iPhone设备部署/运行“ Hello World”?个人证书应该可以很好地部署到您的手机中。
莫里森·张

Answers:


8

编辑:这在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。


非常感谢你!我希望这是固定的!
Ferran Maylinch

所以这是iOS级别的问题?我还在iOS 13.3.1版本的iPhone上遇到此问题
Adromil Balais

是的,这是iOS 13.3.1的问题,后来又拒绝了“个人团队设置”配置文件签名的框架。它不特定于Flutter。GitHub注释中的链接引用了其他项目,并且我可以轻松地在Xcode中使用全新框架重现而无需嵌入Flutter。
珍恩

我刚刚尝试使用iOS 13.4,它有效!我可以在Xcode和IntelliJ IDEA的真实iPhone上运行Flutter应用程序。我想它也可以从命令行运行。
Ferran Maylinch

4

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


你是对的。刚刚在我的iPad上使用13.3进行了测试。我的手机无法在13.3.1上使用。要更新至Beta 2并进行尝试:-)
许慧

13.3.1公开beta 2也有同样的问题。
Ken Hui

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

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

在此处输入图片说明

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

在此处输入图片说明

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

在此处输入图片说明

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

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


我没有Podfile。我在看这篇文章stackoverflow.com/questions/51599686/...
费兰Maylinch

在您的机器上安装cocoapods,并在ios目录中运行pod命令。
Yudhishthir Singh

我有cocoapods。我应该使用哪些pod命令?
Ferran Maylinch

安装Pod,然后更新Pod
Yudhishthir Singh

我已经对我的答案进行了修改,请看一看。
Yudhishthir Singh


1

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

我只想在此向OP和其他成员提供更多详细信息。因此,正如OP所述,我拥有一切。

这是我尝试过的:

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

    • 已清除iOS目录
    • 添加了一个Podfile
    • 跑荚更新。
    • 修复了警告(已将Pod调试和发布配置提供给Xcode)
    • 向用户定义的设置中添加了FLUTTER_ROOT(如无),并且我收到了Xcode-backend.sh错误(不记得了,抱歉)
    • 已建

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

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

    结果:没有任何改变

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

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

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

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

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

    在此过程中出现了一些错误,因为我什至尝试签署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期间未在日志中发现任何可疑的东西

再次。很抱歉,如果我在发布此帖子时做错了什么,但是由于这篇文章很长,我不想重复此问题或建议OP进行编辑。


非常感谢您的回答。这不是解决方案,但是非常有帮助。显然,Flutter出了点问题。看来Google并不完全知道苹果的期望,或者苹果不希望Flutter顺利运行... :)
Ferran Maylinch

顺便说一句,昨天我在另一台Mac电脑上用Mojave(我的手机有Catalina)尝试了Flutter,但我遇到了同样的错误。
Ferran Maylinch

这很可能与CodeSign或Flutter本身有关。我们应该打开一个问题github.com/flutter/flutter/issues
Emin Guliev

是。好主意。让我知道您是否可以这样做,也可以自己做。
Ferran Maylinch

0

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


不幸的是,我得到了同样的错误。切换到稳定频道后,我什至创建了一个新的flutter应用程序。我更新了问题,以表明我现在处于稳定状态。
Ferran Maylinch,

我还添加了flutter run的输出。
Ferran Maylinch,

0

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

打开该项目的XCode并检查Build Settings,因为那里的FLUTTER_ROOT路径正确,如果不存在,请创建flutter根目录并提供路径。


我有一个正确的FLUTTER_ROOT。那不是问题... :(
Ferran Maylinch


0

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


我没有Podfile,所以我正在检查:stackoverflow.com/questions/51599686 / ... 无论如何,我不知道我需要什么Podfile。我创建了一个,但仍然遇到相同的错误。因此,也许我不需要Podfile,或者无论如何,问题是另一个。
Ferran Maylinch

0

好的,有时间创建答案:

基于Subaharan Vel的答案,问题:未在ios目录中创建Flutter Podfile和Pods文件夹, 回答暗示为iOS模拟器构建可能会在错误的位置创建podfile(应该直接在iOS目录中自动创建。因此,看来您的Podfile存在于某处。尝试找到它或仅删除整个ios目录,清理项目并重新创建它。还请确保不是这种情况,在添加Flutter插件之前创建Podfile来添加iOS Pod决不要将插件Pod挂接到现有的Podfile

祝您好运,希望对您有所帮助


Podfile哪里都没有。我跑步find . -name Podfile,什么也没得到。我删除了ios目录,但是现在,如何重新创建它?如果我跑步,flutter build ios我会收到错误消息Application not configured for iOS
Ferran Maylinch

@Ferran Maylinch只需重复Surbahan Vel(第一个链接)中的所有步骤-他确实删除了ios目录,并且在清理项目后重新创建了它。如有必要,手动添加podfile(从stackoverflow.com/a/53492243/7183675,从此处删除不必要的Pod,并检查此答案下的第二条注释)。不得已-如果您将至少一个软件包添加到pubspec强制Flutter自动创建Podfile,则可能会有所帮助。即使该软件包并未真正使用
Adam Tucholski

0

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

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.