Flutter 构建 iOS 时出现错误:已请求但未找到带有标识符的扩展点

Nic*_*ela 137 xcode ios flutter

我刚刚升级到 Xcode 13.3-beta,运行 flutter 项目出现此错误:

\n
Error output from Xcode build:\n\xe2\x86\xb3\n    2022-03-02 17:45:38.148 xcodebuild[62848:6695836] Requested but did not find extension point with identifier\n    Xcode.IDEKit.ExtensionSentinelHostApplications for extension Xcode.DebuggerFoundation.AppExtensionHosts.watchOS of plug-in\n    com.apple.dt.IDEWatchSupportCore\n    2022-03-02 17:45:38.148 xcodebuild[62848:6695836] Requested but did not find extension point with identifier\n    Xcode.IDEKit.ExtensionPointIdentifierToBundleIdentifier for extension Xcode.DebuggerFoundation.AppExtensionToBundleIdentifierMap.watchOS of\n    plug-in com.apple.dt.IDEWatchSupportCore\n    ** BUILD FAILED **\n
Run Code Online (Sandbox Code Playgroud)\n

现在,我很困惑,我正在模拟器上运行 iOS 应用程序,为什么会出现像 watchOS 这样的错误?

\n

我完全不知道如何解决这个错误。

\n

有人可以帮助我吗?

\n

Pho*_*per 70

好吧,很奇怪,但多次运行 xcrun 似乎可以解决这个问题。我最近也更新到了 Xcode 13.3。

xcrun -sdk iphoneos --show-sdk-path
Run Code Online (Sandbox Code Playgroud)

第一次它显示错误。第二次它显示正确答案。我用所有三个 sdks、iphoneos、macosx、watchos 运行它,并且第一次都显示错误。我还使用所有三个 sdk 的所有五个选项运行它:

xcrun -sdk iphoneos --show-sdk-path
xcrun -sdk iphoneos --show-sdk-version
xcrun -sdk iphoneos --show-sdk-build-version
xcrun -sdk iphoneos --show-sdk-platform-path
xcrun -sdk iphoneos --show-sdk-platform-version
Run Code Online (Sandbox Code Playgroud)

之后 xcodebuild 的构建错误就消失了,尽管我不确定哪个命令修复了它。

  • 为我修好了。为了对我使用的所有 sdks 运行此命令:`xcodebuild -showsdks | grep -oe“-sdk .*”| awk '{print $2}' | xargs -S 1000 -n 1 -R '-1' -I % sh -c 'xcrun --sdk % --show-sdk-path --show-sdk-path && xcrun --sdk % --show-sdk -version && xcrun --sdk % --show-sdk-build-version && xcrun --sdk % --show-sdk-platform-path && xcrun --sdk % --show-sdk-platform-version'` (3认同)

use*_*606 29

通过运行修复了这个问题。

xcrun -sdk macosx --show-sdk-path 
Run Code Online (Sandbox Code Playgroud)

这会输出您当前的 skd 路径。

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk
Run Code Online (Sandbox Code Playgroud)

将其添加到您的 .zshrc 文件中。

export SDKROOT=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk
Run Code Online (Sandbox Code Playgroud)

来源它

source ~/.zshrc
Run Code Online (Sandbox Code Playgroud)

现在运行

 xcrun -sdk macosx --show-sdk-version
Run Code Online (Sandbox Code Playgroud)

  • 有什么理由不`export SDKROOT=$(xcrun -sdk macosx --show-sdk-path)`?我不想每年更新我的 zshrc (23认同)
  • 我尝试过并不能解决我的问题。 (6认同)
  • 不幸的是这对我不起作用。 (3认同)

小智 24

为了避免对版本进行硬编码,您可以将其添加到您的 .profile 中:

export SDKROOT=$(xcrun -sdk macosx --show-sdk-path)
Run Code Online (Sandbox Code Playgroud)

重新加载配置文件(您的配置文件的源路径)并运行

xcrun -sdk macosx --show-sdk-version
Run Code Online (Sandbox Code Playgroud)

核实


小智 18

找到解决方案:

  1. 在App Store中检查Xcode的更新(应该已经更新了,但只是为了确认)
  2. 启动 Xcode;它会要求您安装其他软件。安装完成后,错误就会消失。


小智 14

如果它是一个 flutter 项目,以下步骤可能会有所帮助:

  • 更新MacOS
  • 更新 Xcode 和命令行工具
  • 运行flutter pub upgradeflutter pub get在项目文件夹中
  • 删除项目ios文件夹中的podfile.lock
  • 在项目文件夹中运行cd ios, pod repo update,pod install


tua*_*ptn 10

这是 xcode 的问题,当 xcode select 不与 CommandLineTools 链接时,在命令下面运行以链接它

// reset to the default command line tools path
xcode-select -r

// Link xcode-select with CommandLineTools
sudo xcode-select -s /Library/Developer/CommandLineTools
Run Code Online (Sandbox Code Playgroud)

如果那不起作用。也许钥匙串的问题不是解锁。

你需要通过以下方式解锁

security unlock-keychain
Run Code Online (Sandbox Code Playgroud)

或者用密码

security unlock-keychain -p <password>
Run Code Online (Sandbox Code Playgroud)

希望这个方法可以帮到你,谢谢。


C. *_*dal 6

令人遗憾的是,XCode 13.3 存在这个问题。

这个答案指出了这一点 - Stackoverflow Answer- Flutter for iOS run, build but not archive

给出的三个解决方案是

  • 修改代码

  • 降级到 Xcode 13.2.1

  • 等待Apple修改Xcode

对于我自己来说,我使用 CodeMagic,并且没有降级我的 Archive 的奢侈。XCode 可能需要几个月的时间来更新。所以修改代码是唯一的选择。我发现这个问题于 2022 年 3 月 15 日打开。最终有这个解决方案。

打开 Podfile 并粘贴 pod 'DKImagePickerController/PhotoGallery', :git => 'https://github.com/miguelpruivo/DKImagePickerController.git' ,如下所示:

`target 'Runner' do
use_frameworks!
use_modular_headers!
#Workaround for segmentation fault:11 while archiving
#Add the below line
pod 'DKImagePickerController/PhotoGallery', :git => 'https://github.com/miguelpruivo/DKImagePickerController.git'

flutter_install_all_ios_pods File.dirname(File.realpath(FILE))
end`
Run Code Online (Sandbox Code Playgroud)

是的,我知道你的错误,说你的错误是通过 WatchOS 造成的。但据我了解,这是 Xcode 13.3 版本中出现的问题。在 Xcode 13.3 中,如果您有使用 UI_USER_INTERFACE_IDIOM() 的代码,则在运行 Archive 时将收到“内存不足”错误。将“UI_USER_INTERFACE_IDIOM()”更改为“UIDevice.current.userInterfaceIdiom”可以解决该错误。使用 DKImagePickerController/PhotoGallery 的 flutter pod 通常会出现此问题。

我能够在不接触任何与手表相关的东西的情况下解决这个问题。除此之外,我确保我的 flutter 项目的最低支持级别为 12,但这可能完全不相关。

最终降级可能是解决方案。如果有人对深入研究感到好奇,我的许多链接也会带来其他解决方案。


小智 6

文件有错误/Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform/Developer/Library/Xcode/PrivatePlugIns/IDEWatchSupportCore.ideplugin/Contents/Resources/IDEWatchSupportCore.xcplugindata

您应该对其进行备份,然后在 plist 编辑器中将其打开并完全删除以下项目:

  • 根目录/plug-in/extensions/Xcode.DebuggerFoundation.AppExtensionHosts.watchOS
  • 根/插件/扩展/Xcode.DebuggerFoundation.AppExtensionToBundleIdentifierMap.watchOS


Cíc*_*ura 5

检查 Xcode 是否有更新。

xcode-select --install
Run Code Online (Sandbox Code Playgroud)

如果您从上面的命令中收到以下消息,请尝试:

xcode-select:错误:命令行工具已安装,请使用“软件更新”安装更新

  sudo rm -rf /Library/Developer/CommandLineTools
  xcode-select --install
Run Code Online (Sandbox Code Playgroud)

另外,您应该检查是否有可用的 macOS 更新。

单击左上角的 Apple 图标 > 关于本机 > 软件更新(例如 macOS Monterey 12.3)


小智 3

就我而言,它的 React Native 应用程序,问题出在可可豆荚上。重新安装 Pod 有帮助。在您的项目文件夹下面运行

rm -rf ios/Pods && npx pod-install
Run Code Online (Sandbox Code Playgroud)

  • 该错误不是由 cocoapods 引起的。它是 `xcodebuild` 的输出。 (3认同)