xcode升级26(iOS26适配)踩坑记录

一、流程记录

  • 报错记录:
Undefined symbols for architecture arm64:
  "__swift_FORCE_LOAD_$_swiftCompatibility50", referenced from:
      __swift_FORCE_LOAD_$_swiftCompatibility50_$_FirebaseAnalytics in FirebaseAnalytics[17](Analytics+StoreKit.o)
  "__swift_FORCE_LOAD_$_swiftCompatibility51", referenced from:
      __swift_FORCE_LOAD_$_swiftCompatibility51_$_FirebaseAnalytics in FirebaseAnalytics[17](Analytics+StoreKit.o)
  "__swift_FORCE_LOAD_$_swiftCompatibility56", referenced from:
      __swift_FORCE_LOAD_$_swiftCompatibility56_$_FirebaseAnalytics in FirebaseAnalytics[17](Analytics+StoreKit.o)
  "__swift_FORCE_LOAD_$_swiftCompatibilityConcurrency", referenced from:
      __swift_FORCE_LOAD_$_swiftCompatibilityConcurrency_$_FirebaseAnalytics in FirebaseAnalytics[17](Analytics+StoreKit.o)
  "__swift_FORCE_LOAD_$_swiftCompatibilityDynamicReplacements", referenced from:
      __swift_FORCE_LOAD_$_swiftCompatibilityDynamicReplacements_$_FirebaseAnalytics in FirebaseAnalytics[17](Analytics+StoreKit.o)
ld: symbol(s) not found for architecture arm64
  • 最开始是问chatgpt去解决的,根据gpt给的方案一顿改,最终也没能改好
  • 然后gpt推荐我把firebase库从cocoapods移除,改成用SPM,firebase-ios-sdk的方式去安装
  • 当我一顿操作后,报错:
xcode26 framework 'FirebaseAppCheckInterop' not found
  • 又是根据gpt给的指示一顿操作,最终得出结论FirebaseAppCheckInterop是firebase内部库无法引用,也基本没有解决方案,
  • 这时我gpt的额度用完了
  • 于是我把代码回退了,把firebase库重新从SPM的方案改成了cocoapods,还是继续报错,
  • 这回我选择了使用Google浏览器自带AI模式
    https://www.google.com/search

二、解决方案

(我不确定其中具体哪步是有用的哪步是多余的,反正全部操作后可用,因为我2个项目是基本相同的代码,项目2重复按此步骤操作可行)

1、Swift Language Version

NotificationService 的 Build Settings 里,Swift Language Version 选中跟主target同样的swift版本,我这里是选择swfit5

2、Validate Built Product

Build Settings - Validate Built Product = NO

3、Enable Testability

Build Settings - Enable Testability = NO

4、精准修复 Library Search Paths

Build Settings 中手动填入绝对路径(替代变量):
找到 Library Search Paths。
删除所有现有内容,只保留 $(inherited)。
依次手动点击 + 号添加(确保是 non-recursive):

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift-5.0/iphoneos

(注意:如果你的 Xcode 重命名了,请修改 /Applications/Xcode.app/ 为实际路径)

5、修改 Other Linker Flags (强制弱引用)

如果 Firebase 还在寻找这些符号,我们需要告诉链接器:如果找不到就忽略,不要报错。

NotificationService -> Build Settings -> Other Linker Flags。
添加以下标志:
-Wl,-undefined,dynamic_lookup
-Wl,-no_compact_unwind (Xcode 26 针对旧版库的常用补丁)

6、最后

在你的 Podfile post_install 中加入这段,强制 Pods 寻找正确的路径:

# 合并后的 post_install 逻辑,放在 Podfile 最底部
post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      # 1. 统一所有 Pods 的部署版本(解决版本不一致导致的符号丢失)
      config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '13.0'
      
      # 2. 强制添加 Xcode 26 缺失的 Swift 兼容库搜索路径
      # 这里的顺序很重要:$(inherited) 必须在第一位
      config.build_settings['LIBRARY_SEARCH_PATHS'] ||= ['$(inherited)']
      config.build_settings['LIBRARY_SEARCH_PATHS'] << '$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)'
      config.build_settings['LIBRARY_SEARCH_PATHS'] << '$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)'
      
      # 3. 针对 Extension 的特殊设置:允许非模块化头文件(Firebase 常需)
      config.build_settings['CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES'] = 'YES'
      
      # 4. 修复 Xcode 26 自动精简符号的问题
      config.build_settings['DEAD_CODE_STRIPPING'] = 'NO'
    end
  end
end
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • """1.个性化消息: 将用户的姓名存到一个变量中,并向该用户显示一条消息。显示的消息应非常简单,如“Hello ...
    她即我命阅读 5,923评论 0 6
  • 1、expected an indented block 冒号后面是要写上一定的内容的(新手容易遗忘这一点); 缩...
    庵下桃花仙阅读 1,170评论 1 2
  • 一、工具箱(多种工具共用一个快捷键的可同时按【Shift】加此快捷键选取)矩形、椭圆选框工具 【M】移动工具 【V...
    墨雅丫阅读 1,836评论 0 0
  • 跟随樊老师和伙伴们一起学习心理知识提升自已,已经有三个月有余了,这一段时间因为天气的原因休课,顺便整理一下之前学习...
    学习思考行动阅读 1,207评论 0 2
  • 一脸愤怒的她躺在了床上,好几次甩开了他抱过来的双手,到最后还坚决的翻了个身,只留给他一个冷漠的背影。 多次尝试抱她...
    海边的蓝兔子阅读 1,092评论 1 4

友情链接更多精彩内容