Debug模式构建正常,切换至Release模式出现clang库文件找不到错误
我之前也踩过类似的Release构建找不到静态库的坑,给你几个实际有效的排查和解决方向:
检查Release模式的Library Search Paths:
打开项目的Build Settings,切换到Release配置,确认Library Search Paths里包含了libRNGoogleSignIn.a所在的路径。很多时候Debug和Release的搜索路径是分开配置的,可能你只在Debug里加了路径,Release没同步过去。另外注意路径尽量用相对路径或者完整绝对路径,避免Xcode解析出错。验证RNGoogleSignIn的Release编译配置:
找到RNGoogleSignIn的子项目,进入它的Build Settings,确认Release模式下的编译是正常启用的。可以单独尝试编译这个子项目的Release版本,如果编译失败,那就是第三方库本身的Release配置有问题,需要先修复这个库的编译问题再归档主项目。彻底清理构建缓存:
直接删除报错里提到的整个DerivedData目录:rm -rf /Users/vagrant/Library/Developer/Xcode/DerivedData/myProject-afhcainiqkrasrazkmlyzpkzbhne/然后回到Xcode,执行
Cmd+Shift+K清理Build Folder,再重新尝试归档。有时候缓存里的旧文件会干扰Release构建,清理后大概率能解决这类找不到文件的问题。检查Scheme的Archive配置:
点击Xcode顶部的Scheme,选择Edit Scheme,切换到Archive标签页,确认Build Configuration是Release,并且在Build列表里勾选了RNGoogleSignIn这个目标。如果Scheme里没包含这个库的Release编译,Xcode归档时就不会生成对应的静态库文件。确认Build Phases的依赖顺序:
在主项目的Build Phases里,确保Target Dependencies中包含RNGoogleSignIn,并且它的顺序在Link Binary With Libraries之前。如果依赖顺序错了,Xcode会先尝试链接静态库,但此时库还没编译生成,自然会报找不到文件的错误。
内容的提问来源于stack exchange,提问作者Ilja




