问题复现
在调整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环境导致的问题出现。
上述问题也只是暂时性的推测,也可能是其他原因导致的问题,需要后续进一步的核实和分析。