导入含FirebaseAnalytics依赖的包时测试构建失败求助
问题原因与解决方案
问题根源
_GULIsLoggableLevel 是GoogleUtilities库中的符号,FirebaseAnalytics依赖该库。测试构建失败的核心原因是:测试目标未正确链接到GoogleUtilities,或是依赖传递、链接器配置缺失导致符号无法被找到。
具体解决步骤
给测试目标添加链接器标志
你之前仅为主target设置了-ObjC,但测试target同样需要这个标志来确保Firebase静态库的类别能被正确加载。修改Package.swift中的测试目标配置:.testTarget( name: "AnalyticsTests", dependencies: ["Analytics"], linkerSettings: [ .unsafeFlags(["-ObjC"]) ])统一Firebase SDK版本
主项目和Analytics包使用的Firebase SDK版本必须完全一致。如果主项目的Firebase版本与你Package中指定的11.12.0不匹配,会导致符号兼容问题,需调整为相同版本。调整主项目测试目标配置
若其他本地包的测试目标导入Analytics后仍报错,需在主项目的测试目标中显式添加FirebaseAnalytics依赖:- 在主项目的Package.swift(或Xcode项目配置)中,给对应测试target添加
.product(name: "FirebaseAnalytics", package: "firebase-ios-sdk")作为依赖。 - 同时为主项目的测试target添加
-ObjC链接器标志。
- 在主项目的Package.swift(或Xcode项目配置)中,给对应测试target添加
显式添加GoogleUtilities依赖(可选)
若Swift Package的依赖传递因静态库特性出现异常,可尝试在Analytics的测试target中显式添加GoogleUtilities依赖:.testTarget( name: "AnalyticsTests", dependencies: [ "Analytics", .product(name: "GoogleUtilities", package: "firebase-ios-sdk") ], linkerSettings: [ .unsafeFlags(["-ObjC"]) ])
验证方法
修改配置后,先单独构建Analytics包的测试目标确认无报错,再将其导入其他本地包进行测试构建。
内容的提问来源于stack exchange,提问作者Bob Voorneveld
相关产品推荐
相关产品推荐

