You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity iOS项目Xcode编译链接错误:未定义StoreKit相关符号

Unity iOS构建时出现链接错误

构建过程中触发以下链接错误:

ld: Undefined symbols:
static StoreKit.Transaction.Offer.PaymentMode.freeTrial.getter : StoreKit.Transaction.Offer.PaymentMode, referenced from:
static (extension in FirebaseAnalytics):__C.FIRAnalytics.logTransaction(StoreKit.Transaction) -> () in FirebaseAnalytics17
type metadata accessor for StoreKit.Transaction.Offer.PaymentMode, referenced from:
static (extension in FirebaseAnalytics):__C.FIRAnalytics.logTransaction(StoreKit.Transaction) -> () in FirebaseAnalytics17
static (extension in FirebaseAnalytics):__C.FIRAnalytics.logTransaction(StoreKit.Transaction) -> () in FirebaseAnalytics17
static (extension in FirebaseAnalytics):__C.FIRAnalytics.logTransaction(StoreKit.Transaction) -> () in FirebaseAnalytics17
nominal type descriptor for StoreKit.Transaction.Offer.PaymentMode, referenced from:
_symbolic _____Sg 8StoreKit11TransactionV5OfferV11PaymentModeV in FirebaseAnalytics17
_symbolic _____Sg_ABt 8StoreKit11TransactionV5OfferV11PaymentModeV in FirebaseAnalytics17
protocol conformance descriptor for StoreKit.Transaction.Offer.PaymentMode : Swift.Equatable in StoreKit, referenced from:
static (extension in FirebaseAnalytics):__C.FIRAnalytics.logTransaction(StoreKit.Transaction) -> () in FirebaseAnalytics17
StoreKit.Transaction.Offer.paymentMode.getter : StoreKit.Transaction.Offer.PaymentMode?, referenced from:
static (extension in FirebaseAnalytics):__C.FIRAnalytics.logTransaction(StoreKit.Transaction) -> () in FirebaseAnalytics17
StoreKit.Transaction.Offer.type.getter : StoreKit.Transaction.OfferType, referenced from:
static (extension in FirebaseAnalytics):__C.FIRAnalytics.logTransaction(StoreKit.Transaction) -> () in FirebaseAnalytics17
type metadata accessor for StoreKit.Transaction.Offer, referenced from:
static (extension in FirebaseAnalytics):__C.FIRAnalytics.logTransaction(StoreKit.Transaction) -> () in FirebaseAnalytics17
nominal type descriptor for StoreKit.Transaction.Offer, referenced from:
_symbolic _____Sg 8StoreKit11TransactionV5OfferV in FirebaseAnalytics17
StoreKit.Transaction.offer.getter : StoreKit.Transaction.Offer?, referenced from:
static (extension in FirebaseAnalytics):__C.FIRAnalytics.logTransaction(StoreKit.Transaction) -> () in FirebaseAnalytics17
static (extension in FirebaseAnalytics):__C.FIRAnalytics.logTransaction(StoreKit.Transaction) -> () in FirebaseAnalytics17
clang: error: linker command failed with exit code 1 (use -v to see invocation)

已尝试但无效的操作

  • 将StoreKit.framework添加至UnityFramework
  • 重新安装、更新、移除CocoaPods仓库
  • 清理构建文件并重新构建Unity项目
  • 在Build Settings中使用$(inherited)
  • 完全移除Podfile后重新安装
  • 清理缓存

针对性解决方法

1. 提升iOS目标版本

错误中引用的StoreKit.Transaction是iOS 15+引入的StoreKit 2 API,若项目Deployment Target低于iOS 15,链接器会无法找到这些符号:

  • 在Unity的Player Settings > iOS > Other Settings中,将Minimum iOS Version设置为15.0或更高
  • 导出Xcode项目后,确认主目标和UnityFramework目标的Deployment Target同步为15.0+

2. 调整Firebase Analytics版本

部分新版本Firebase Analytics默认依赖StoreKit 2,若项目暂不支持iOS 15,可降级到兼容StoreKit 1的版本:

  • 修改Unity项目中的Podfile(或通过Firebase Unity SDK配置),指定Firebase Analytics版本为~> 9.6.0(该版本不强制依赖StoreKit 2)
  • 执行pod install --repo-update重新安装依赖

3. 启用Unity iOS的Swift支持

由于StoreKit.Transaction是Swift专属API,Unity导出时需开启Swift支持:

  • 在Unity的Player Settings > iOS > Other Settings中,将Scripting Backend设置为IL2CPP
  • 勾选Enable Swift Support,并确保Swift Version设置为5.0+
  • 导出Xcode项目后,检查主目标的Build Settings > Swift Compiler - General中是否正确配置Swift版本

4. 检查Xcode链接配置

  • 打开Xcode项目,进入UnityFramework目标的Build Phases > Link Binary With Libraries,确认StoreKit.framework已添加且状态为Required
  • 若仍报错,尝试在Build Settings > Other Linker Flags中添加-framework StoreKit

内容的提问来源于stack exchange,提问作者Nan Taty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 02:59:56