在尝试在iOS设备上运行时,Flutter签名无效。
在尝试在iOS设备上运行时,Flutter签名无效。
TL;DR
编辑2020-05-06:我的应用在iOS 13.4上安装正确,但一段时间后在启动时崩溃,我不知道为什么。可能是iOS更新后的问题吗?
还请参阅下面的答案:https://stackoverflow.com/a/60013390/1121497
完整问题
我正在尝试在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.) ⢿
在Xcode中,我配置了一个团队(个人团队),签名证书(Apple开发证书)看起来都没问题,因为我可以在设备上安装一个Hello world的Swift项目。
注意:我没有支付苹果开发者计划的账户。运行Flutter应用程序在iOS设备上绝对需要这个吗?
我遵循了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.
如您所见,我使用了稳定频道,以排除与测试频道的问题,但我通常使用测试频道构建flutter for web(这个也工作正常)。
在iOS模拟器中,应用程序也正常工作。
最近我注意到我没有ios/Podfile
文件。我在这篇帖子中找到了相关信息。我不知道在我的情况下这是否重要,但我尝试手动添加了这个Podfile,但结果还是显示相同的签名错误。
因为这个问题令人沮丧,所以我暂时转向了NativeScript。
Flutter在iOS设备上出现“Flutter签名无效”的问题是由以下原因导致的:
1. 您是否同意了Xcode许可协议?如果没有同意,请尝试使用sudo xcodebuild -license
命令来同意许可协议。
2. 您的pods是否已更新?如果没有,请在终端中导航到Flutter项目中的ios文件夹,并输入pod install
,然后输入pod update
。
如果上述方法不起作用,请按照以下步骤操作:
1. 在Flutter项目的ios文件夹中,双击打开Runner.xcworkspace。界面应该是这样的:
2. 当Xcode打开时,点击左上角的Runner。
3. 然后进入Signing and Capabilities,在“Team”下拉菜单中选择一个选项。如果没有选项,请创建一个账户。
4. 在“Bundle Identifier”中,您的应用程序的包名称应该显示出来。在末尾添加“.app”。例如,如果它是“com.example.yourapp”,请修改为“com.example.yourapp.app”,然后按回车键。
5. 点击左上角的播放按钮,以在选择的设备上运行应用程序。
如果您在ios文件夹中没有Podfile文件,可以按照以下步骤进行操作:
1. 在您的计算机上安装CocoaPods,并在ios文件夹中运行Pod命令。
2. 如果pod install
命令显示[!] No 'Podfile' found in the project directory
,这是因为Flutter没有生成Podfile文件。有关此的问题可以在这里找到。
另外,如果您已经在“Team”字段中定义了一个Team,并且可以创建并在iPhone上运行普通的iOS应用程序,但对于Flutter应用程序却失败了,这可能是由于其他问题导致的。
经过初步观察,这个问题似乎是Flutter与iOS 13.3.1的兼容性问题。在我的案例中,我的应用在iPhone XR上的iOS 13.3上可以完美运行,但在另一个iPhone XR上的iOS 13.3.1上启动时崩溃。由于这是一个相机应用程序,无法在模拟器上进行测试,但它在实体Android设备和Android模拟器上运行正常。
你说得对。我刚用我的iPad进行了13.3的测试。我的手机在13.3.1上无法工作。我打算更新到beta 2版本并尝试一下 🙂
13.3.1公测版2也存在同样的问题。
根据以上内容,可以推断出导致(Flutter signature invalid when tried on an iOS device)问题出现的原因是Flutter与iOS 13.3.1的兼容性问题。解决方法是更新到iOS 13.3版本或者等待Flutter更新修复该兼容性问题。
Flutter signature invalid when tried on an iOS device
最近,一些开发者在尝试将Flutter应用程序在iOS设备上运行时遇到了一个问题,即“Flutter签名无效”。这个问题的出现原因是因为iOS 13.3.1和以后的版本拒绝了个人开发者团队(Personal Team)签名的框架。这个问题与Flutter无关,不仅仅是在Flutter项目中出现,还可以在其他使用个人开发者团队签名的项目中复现。
根据在GitHub上的讨论,这个问题已经在iOS 13.4版本中解决了。因此,开发者可以通过升级iOS设备的操作系统版本来解决这个问题,确保iOS设备的操作系统版本高于或等于13.4。
然而,对于那些无法立即升级iOS设备操作系统版本的开发者而言,目前唯一的解决方法是避免将开发设备升级到13.3.1版本,直到问题得到解决。
需要注意的是,这个问题不会影响到开发者账户团队签名的框架和已经在App Store上签名和分发的应用程序。
总结一下,Flutter签名无效问题是由于iOS 13.3.1和以后的版本拒绝了个人开发者团队签名的框架所导致的。解决这个问题的方法是升级iOS设备的操作系统版本至13.4或更高,或者避免将开发设备升级到13.3.1版本。希望这个问题能够尽快得到修复。
更多相关信息可以参考GitHub上的讨论:https://github.com/flutter/flutter/issues/49504#issuecomment-581554697。