问题在标题中简单说明。这是我的设置:
构建一个动态框架,可选择链接(弱链接)到 GoogleInteractiveMediaAds.framework。对于使用我的框架的应用程序,GoogleInteractiveMediaAds 是一个可选依赖项,没有它框架也能正常工作。这目前正在工作。
但是,当尝试从位码重建时会出现问题,这通常发生在选择“从位码重建”导出 Ad Hoc 构建时。位码编译过程失败:
ipatool failed with an exception: #<CmdSpec::NonZeroExitException: $/Applications/Xcode.app/Contents/Developer/usr/bin/bitcode-build-tool ...
并深入查看日志文件,我发现错误描述:
Failed to resolve linkage dependency MyFramework arm64 -> @rpath/GoogleInteractiveMediaAds.framework/GoogleInteractiveMediaAds: Could not resolve @rpath in @rpath/GoogleInteractiveMediaAds.framework/GoogleInteractiveMediaAds from MyFramework
error: GoogleInteractiveMediaAds not found in dylib search path
注意:GoogleInteractiveMediaAds.framework 确实包含位码。
显然,通过不选择“从位码重建”来避免此错误。如果我要回答我自己的问题,我会说,不,看起来从位码编译时,你不能使用弱链接框架。仅仅因为位码编译步骤试图链接到应用程序目标中未包含的框架。但是,我无法找到任何使用位码弱链接的官方文档,或任何相关的 StackOverflow 答案,所以我不确定我是否遗漏了什么或者是否有一些相关的编译器/链接器设置我错过了让它工作。