Xcode报错:Lottie-Dynamic.framework/Lottie-Dynamic
Xcode报错:Lottie-Dynamic.framework/Lottie-Dynamic

Xcode报错:Lottie-Dynamic.framework/Lottie-Dynamic

问题复现

在调整Lottie文件的过程中,发现iOS主应用无法在Xcode中预览,显示如下报错:

No such file or directory: '/Users/fangjunyu/Library/Developer/Xcode/DerivedData/piglet-ctfeczjsbemrfhhjuuixdytgqbjg/Build/Products/Debug-iphoneos/PackageFrameworks/Lottie-Dynamic.framework/Lottie-Dynamic'

经过排查了解到,报错原因为Xcode无法找到一个依赖库或框架文件,导致链接失败。

我经过与之前可以正常运行的Xcode项目对比,发现在Xcode项目的配置(TARGETS – Build Phases – Link Binary With Libraries)中,含有多余的一个“Lottie-Dynamic”。

解决方案

将Link Binary With Libraries中的“Lottie-Dynamic”移除后,问题得到解决。

经过排查了解到,可能是因为链接到同一个框架或库的多个版本(例如静态和动态版本)会导致冲突或找不到正确的文件路径。

移除“Lottie-Dynamic”后,仍然可以看到一个Lottie:

移除多余的框架后,进行一次清理(Shift + Command + K)并重新构建项目(Command + B)。

如果问题依然存在,可以尝试清除 DerivedData 以确保所有缓存文件被清除。

问题分析

这一问题实际上是创建WatchOS扩展后引发的,因为创建 WatchOS 扩展会导致项目的配置发生变化,尤其是在 Link Binary with Libraries 和目标架构的设置上。可能发生了以下几种情况:

1、WatchOS 扩展影响主应用配置

创建新的目标(WatchOS 扩展)可能改变了 iOS 目标的构建设置,导致不兼容的框架被意外链接。例如,Lottie-Dynamic.framework 被错误地链接到主应用中,导致构建失败。

2、跨平台依赖管理问题

如果使用的是 CocoaPods 或其他依赖管理工具,创建新的目标(如 WatchOS 扩展)可能导致新的依赖或配置冲突,尤其是在不同平台间使用不同的框架时。可能需要为不同平台(iOS、watchOS)设置条件依赖,确保只在支持的平台上链接特定的框架。

总结

这一问题可能涉及WatchOS扩展导致引入多余的Lottie-Dynamic.framework,并且不兼容WatchOS环境导致的问题出现。

上述问题也只是暂时性的推测,也可能是其他原因导致的问题,需要后续进一步的核实和分析。

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开放者。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注