Xcode 上的 Flutter 应用程序升级后无法启动

Posted

技术标签:

【中文标题】Xcode 上的 Flutter 应用程序升级后无法启动【英文标题】:Flutter app on Xcode won't launch after upgrade 【发布时间】:2021-01-11 17:54:31 【问题描述】:

我有一个用 Flutter 制作的应用程序,因为最新版本的 Xcode 完全没有像以前那样工作。 我已经为这个问题苦苦挣扎了将近一个星期,并且错误因时间而异。

主要问题是,在将应用程序分发给 Apple 进行审查时,他们拒绝了它并显示以下消息:


2.1 性能:应用完整性指南

2.1 - 性能 - 应用完整性

在 iPad 上审核时,我们在您的应用中发现了一个或多个错误 在 Wi-Fi 上运行 ios 14.0。

具体来说,我们仍然无法通过 Sign in with Apple 登录


我觉得这很奇怪,因为我之前上传的所有内容都经过验证,没有任何问题。 因此,为了纠正这个问题,我试图通过模拟器运行应用程序,因为我没有 iPad。 问题就从这里开始。

旁注:在物理 iPhone 上运行没有问题,我正在打开项目 runner.xcworkspace,而不是 runner.xccodeproj

主要问题是Xcode找不到任何库,从第一个开始:

GeneratedPluginRegistrant.m:10:9:找不到模块“apple_sign_in”

我已经尝试了与此问题相关的所有解决方案,但无济于事。

删除 pod 文件,pod install, pod deintegrate、pod init、pod install flutter build ios --release, flutter run 我已尝试删除我的项目并克隆它以重新开始 有时甚至样板应用程序都无法运行 我检查了 https://github.com/flutter/flutter/issues/53573 和 https://github.com/flutter/flutter/issues/33423 之类的 github 帖子,但没有成功。 ...检查了无数线程。

Flutter 医生和 pod 文件如下:

[✓] Flutter (Channel stable, 1.20.4, on Mac OS X 10.15.6 19G2021, 语言环境 en-ES) • Flutter 1.20.4 版,位于 /Users/peter/flutter • 框架修订fba99f6cf9(11天前),2020-09-14 15:32:52 -0700 • 引擎版本 d1bc06f032 • Dart 版本 2.9.2

[✓] android 工具链 - 为 Android 设备开发(Android SDK 版本 30.0.1) • Android SDK 位于 /Users/peter/Library/Android/sdk • 平台 android-30,构建工具 30.0.1 • Java 二进制文件位于: /Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/bin/java • Java 版本 Java(TM) SE 运行时环境(内部版本 1.8.0_51-b16) • 接受所有 Android 许可证。

[✓] Xcode - 为 iOS 和 macOS 开发 (Xcode 12.0) • Xcode 位于 /Applications/Xcode.app/Contents/Developer • Xcode 12.0,内部版本 12A7209 • CocoaPods 1.9.3 版

[!] Android Studio(未安装) • 未找到Android Studio;从下载 https://developer.android.com/studio/index.html (或访问https://flutter.dev/docs/get-started/install/macos#android-setup 详细说明)。

[!] IntelliJ IDEA 社区版(2017.2.5 版) • IntelliJ 位于 /Applications/IntelliJ IDEA CE.app ✗ 未安装 Flutter 插件;这增加了 Flutter 特定的功能。 ✗ Dart 插件未安装;这增加了 Dart 特定的功能。 • 有关安装插件的信息,请参阅 https://flutter.dev/intellij-setup/#installing-the-plugins

[✓] 已连接设备(1 个可用) • iPhone 11(移动) • F1B8AE15-9028-4E0D-BD9D-2F2C7CC93ECE • ios • com.apple.CoreSimulator.SimRuntime.iOS-14-0(模拟器)

!医生发现了 2 类问题。

podfile:

# Uncomment this line to define a global platform for your project
platform :ios, '9.0'

# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'

project 'Runner', 
  'Debug' => :debug,
  'Profile' => :release,
  'Release' => :release,


def flutter_root
  generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
  unless File.exist?(generated_xcode_build_settings_path)
    raise "#generated_xcode_build_settings_path must exist. If you're running pod install manually, make sure flutter pub get is executed first"
  end

  File.foreach(generated_xcode_build_settings_path) do |line|
    matches = line.match(/FLUTTER_ROOT\=(.*)/)
    return matches[1].strip if matches
  end
  raise "FLUTTER_ROOT not found in #generated_xcode_build_settings_path. Try deleting Generated.xcconfig, then run flutter pub get"
end

require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)

flutter_ios_podfile_setup

target 'Runner' do
  use_frameworks!
  use_modular_headers!

  flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
end

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['ENABLE_BITCODE'] = 'YES'
      config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '9.0'
    end
  end
end

【问题讨论】:

如果 Xcode 警告您缺少模块,您能够执行 Xcode 构建,这很奇怪。你是如何实现 Apple 登录的?有包裹吗? @E.Benedos 我可以在物理设备上运行代码,但不能在模拟器上运行代码,这就是发生导入错误的时候。 Apple 登录是使用我已经使用了几个月的包。我正在使用这个:pub.dev/packages/apple_sign_in 您是否也尝试在专用仓库上打开问题?这似乎是一个包问题,而不是一个颤振的问题。 @E.Benedos。如果我删除那个包,它会给我下一个包的相同错误。如果我可以在物理设备上编译和运行,那么应该没有任何理由不能在模拟器上做同样的事情。 如果您使用的是不稳定的颤振版本,则可能会导致打包问题。然后你会回到稳定的频道(你可以用谷歌搜索)。但是我在这种情况下收到的错误与您的不同。但是,根据 Apple 的声明,我了解到您缺少 Apple ID 登录的可能性。所以从那里,我会调查你的问题(实现,包运行与颤振发布,工作包功能......) 【参考方案1】:

Flutter 1.20.4 和 XCode12/iOS14 存在问题。 您需要将 Flutter 更新到当前的 beta (1.22.0-12.3.pre),其中包含许多针对新 iOS/XCode 版本的修复。

见https://flutter.dev/docs/development/ios-14

2020 年 10 月 1 日编辑: Flutter 1.22.0 已经发布到稳定版,应该可以与 XCode 12 和 iOS 14 一起使用。

【讨论】:

【参考方案2】:

这可能是 iOS 模拟器的问题。

查看this论坛。

你可能想回复他们从论坛中指出这个问题,似乎对其他人有用。

【讨论】:

【参考方案3】:

尝试让xcode中的模块看看是否找到apple_sign_in

打开Xcode选择Runner > Signing % Capabilities > +Capabilities > Select Apple_Sign_In

Xcode screenshot

【讨论】:

是的,就是这样。自从我的应用程序的最后一个工作和接受版本以来,我没有触及任何这些设置。

以上是关于Xcode 上的 Flutter 应用程序升级后无法启动的主要内容,如果未能解决你的问题,请参考以下文章

macOS Catalina 上的颤振“设备不支持无线同步”错误

如何在 Flutter 中使用 Xcode 12.5 解决 Stripe 支付问题?

WebSocketException上的Flutter Socket io错误:连接未升级到websocket

Flutter 上的 Xcode 构建错误任何对象错误和 openURL 错误

iOS项目中集成Flutter的最新适配升级

animateWithDuration 在升级到 xcode 4.6 后导致 ios4 上的触摸事件出现问题