flutter 将包迁移到Swift 6语言模式

t1qtbnec  于 10个月前  发布在  Flutter
关注(0)|答案(2)|浏览(109)

背景

Swift 6 语言模式启用了严格的并发检查。可能需要对包进行代码更改以升级到 Swift 6 语言模式。
一个 Swift 6 应用可以依赖于 Swift 5 包,反之亦然。Swift 6 编译器支持 both Swift 6 and Swift 5 language modes
WWDC 会议:https://www.youtube.com/watch?v=75-c6jSE8kU
迁移文档:https://www.swift.org/migration/documentation/swift-6-concurrency-migration-guide/swift6mode/
另请参阅:

工作

迁移使用 Swift 的包(此列表可能不完整):

  • file_selector_ios
  • file_selector_macos
  • interactive_media_ads
  • ios_platform_images
  • path_provider_foundation
  • pointer_interceptor_ios
  • quick_actions_ios
  • shared_preferences_foundation
  • url_launcher_ios
  • url_launcher_macos
nbewdwxp

nbewdwxp1#

我在运行Xcode 16的PR上进行了预提交检查,将SWIFT_STRICT_CONCURRENCY传递给xcodebuild,并将.enableExperimentalFeature("StrictConcurrency")(swift-tools-version为5.9)添加到Package.swift文件中。

quick_actions_ios中,我看到了一个失败:

  1. Swift Compiler Error (Xcode): Main actor-isolated default value in a nonisolated context
  2. packages/packages/quick_actions/quick_actions_ios/ios/quick_actions_ios/Sources/quick_actions_ios/QuickActionsPlugin.swift:23:4

https://github.com/flutter/packages/blob/1e62ab016a36c248554f16b75f787e5cc1c46b27/packages/quick_actions/quick_actions_ios/ios/quick_actions_ios/Sources/quick_actions_ios/QuickActionsPlugin.swift#L23
https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8744845274058465313/+/u/Run_package_tests/build_examples/stdout
另一个在url_launcher_ios上

  1. Swift Compiler Error (Xcode): Main actor-isolated default value in a nonisolated context
  2. packages/packages/url_launcher/url_launcher_ios/ios/url_launcher_ios/Sources/url_launcher_ios/URLLauncherPlugin.swift:24:7

https://github.com/flutter/packages/blob/1e62ab016a36c248554f16b75f787e5cc1c46b27/packages/url_launcher/url_launcher_ios/ios/url_launcher_ios/Sources/url_launcher_ios/URLLauncherPlugin.swift#L24
https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8744845274058465297/+/u/Run_package_tests/build_examples/stdout

展开查看全部
vuv7lop3

vuv7lop32#

Swift编译器错误(Xcode):在非隔离上下文中的主演员隔离默认值
packages/packages/quick_actions/quick_actions_ios/ios/quick_actions_ios/Sources/quick_actions_ios/QuickActionsPlugin.swift:23:4
我们应该将插件的入口(静态函数和init)至少标记为@MainActor。对于像这样的简单插件,没有太多后台操作,可能只需将整个插件标记为@MainActor

相关问题