升级Xcode26一些问题纪要

xcode26

Posted by PaysonChen on October 16, 2025

1、背景

​ 在苹果一贯的不支持向下兼容的更新风格的体验下,需要尽早适配更新的编译器,以及更新的依赖库以实现iOS26的特性。

2、适配

2.1、SWIFT 6

1
2
3
4
5
6
7
8
Showing All Errors Only
Undefined symbol: __swift_FORCE_LOAD_$_swiftCompatibility50
Undefined symbol: __swift_FORCE_LOAD_$_swiftCompatibility51
Undefined symbol: __swift_FORCE_LOAD_$_swiftCompatibility56
Undefined symbol: __swift_FORCE_LOAD_$_swiftCompatibilityConcurrency
Undefined symbol: __swift_FORCE_LOAD_$_swiftCompatibilityDynamicReplacements
Linker command failed with exit code 1 (use -v to see invocation)

使用Xcode26编译项目出现上述错误,错误日志看上去是SWIFT API问题,某些符号找不到,根据符号看应该是SWIFT新旧版本兼容性问题。

2.2、修改SWIFT版本

尝试修改Podfile SWIFT版本:

1
2
3
4
5
6
7
8
9
10
11
12
post_install do |installer|
    installer.generated_projects.each do |project|
          project.targets.each do |target|
              target.build_configurations.each do |config|
								  config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64"
                  config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.0'
                  # 统一 Swift 版本为 6.0(Xcode 26)
                  config.build_settings['SWIFT_VERSION'] = '6.0'
               end
          end
   end
end

以及主工程的SWIFT版本:

1
2
3
SWIFT_VERSION = 4.0
=>
SWIFT_VERSION = 6.0

除了还是报错以外新增了其他错误:

1
2
3
4
5
6
7
8
9
10
Showing All Errors Only
/Users/psc/Documents/PSC/Hybrid/H5/PSCH5Module/Example/Pods/PSCAPM/PSCAPM/Classes/PSC/PSCAPMEventReportUtils+PSC.swift:36:52: Non-Sendable 'String'-typed result can not be returned from main actor-isolated class method 'platformString()' to nonisolated context

/Users/psc/Documents/PSC/Hybrid/H5/PSCH5Module/Example/Pods/PSCAPM/PSCAPM/Classes/PSC/PSCAPMEventReportUtils+PSC.swift:37:52: Non-Sendable 'String'-typed result can not be returned from main actor-isolated class method 'systemVersion()' to nonisolated context

/Users/psc/Documents/PSC/Hybrid/H5/PSCH5Module/Example/Pods/PSCAPM/PSCAPM/Classes/PSC/PSCAPMEventReportUtils+PSC.swift:38:51: Non-Sendable 'String'-typed result can not be returned from main actor-isolated class method 'systemVersion()' to nonisolated context

/Users/psc/Documents/PSC/Hybrid/H5/PSCH5Module/Example/Pods/PSCAPM/PSCAPM/Classes/PSC/PSCAPMEventReportUtils+PSC.swift:39:52: Non-Sendable 'String'-typed result can not be returned from main actor-isolated class method 'appVersionString()' to nonisolated context

这是SWIFT6.0 新增的特性,需要额外适配,先忽略。

3、问题解决

3.1、最低版本号依赖

调整Pod依赖最低编译:

1
2
3
4
5
6
7
8
9
10
11
12
post_install do |installer|
    installer.generated_projects.each do |project|
          project.targets.each do |target|
              target.build_configurations.each do |config|
								  config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64"
								  # 需调整到16.0
                  config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '16.0'

               end
          end
   end
end

为了更好的兼容性,主工程的 Minimum Deployment 也应该调整到16.0

4、结论

为了适配iOS26及采用Xcode26进行编译,牺牲最低版本兼容,符合苹果一贯不太向下兼容做法。

###