NYTPhotoViewer 5.0.8通过SPM集成后无法编译构建
SPM迁移NYTPhotoViewer构建报错排查思路
我们正从CocoaPods迁移至SPM,移除CocoaPods集成后逐步添加各类包均正常,但添加NYTPhotoViewer后构建报错。已确认NYTScalingImageView.m文件中@interface声明位于@implementation上方,且ANIMATED_GIF_SUPPORT已设置为1,以下是具体排查思路:
- 检查包版本适配:确认添加的NYTPhotoViewer版本是否适配Xcode 14.1,部分旧版本对新Xcode或SPM的支持存在缺陷,可尝试切换至最新稳定版或官方标注适配Xcode 14的分支。
- 验证编译宏传递:SPM中编译宏的设置逻辑和CocoaPods不同,需确认
ANIMATED_GIF_SUPPORT=1是否正确传递到NYTPhotoViewer的编译参数中。可在Xcode的Build Phases -> Compile Sources里找到NYTScalingImageView.m,查看其编译选项是否包含-DANIMATED_GIF_SUPPORT=1;若未包含,需在项目的Package.swift中为该包添加对应编译定义。 - 排查依赖冲突:NYTPhotoViewer可能依赖SDWebImage等第三方库,确认SPM中是否已正确引入这些依赖,同时检查是否与项目中已集成的库存在版本冲突。
- 清理构建缓存:执行
Cmd+Shift+K清理Xcode构建文件夹,再手动删除DerivedData目录(路径:~/Library/Developer/Xcode/DerivedData),之后重新构建项目,排除缓存导致的异常。 - 聚焦具体报错信息:整理完整的编译报错内容(如未定义符号、语法错误、头文件缺失等),根据报错类型精准定位问题。比如若报错为GIF相关方法未定义,大概率是编译宏未生效;若为头文件找不到,则需检查SPM的头文件引用配置。
- 本地调试包代码:将NYTPhotoViewer的代码下载到本地,作为本地SPM包引入项目,直接修改调试代码,验证@interface与@implementation的语法正确性、编译宏的作用范围等,确认是否为包本身的兼容性问题。
内容的提问来源于stack exchange,提问作者Murray Sagal
相关产品推荐
相关产品推荐

