在使用Xcode10.2之后镜像错误问题(注意 Xcode10.1是可以正常运行的)
错误图片描述dyld: Library not loaded: @rpath/libswiftAVFoundation.dylib Referenced from: /private/var/containers/Bundle/Application/DD297E99-832D-41B9-AA50-B9A24E4BCC3C/IOSSDKDemo.app/Frameworks/IOSSDK.framework/IOSSDK Reason: image not found Message from debugger: Terminated due to signal 6
列举一下踩过的坑
1.使用install_name_tool工具修改路径
参考$ install_name_tool -change @executable_path/libboost_something.dylib /opt/local/lib/libboost_something.dylib exefile
2.修改Required 为Optional
3.修改Always Embed Swift Standard Libraries 为YES (注意: 这个是一个必改项,不管有没有解决问题都要改成YES)
修改Build Settings4.在Build Phases下新建 New Copy Files Phase (这个是网上给出的最多的,感觉没什么卵用 )
注意两点:
点击+号新建 之后的添加和修改操作10.2打出来的包(swift 4.2/abi stable),需要用10.2的提供的dylib(swift 4.2/abi stable)同样10.1打出来的包(swift 4.2/abi unstable),需要用10.1的提供的dylib(swift 4.2/abi unstable)
5.下载Swfit 5动态库工具 (注意电脑版本只能在10.14.3之前才可以安装,之后不能安装。其实会默认安装这个工具)
工具下载地址 :可以在这里下载到
6.强制修改Mach-O为静态库
7.查看是否有UI操作不是在主线程,更改过来
8.Targets-->General-->Embedded Binaries--> + 添加自己导入的framework 即可正确找到资源路径
9.更新 brew 系列方式
brew update
brew upgrade node
brew upgrade
brew install libpng
10 清理内存 (两种方式)
Comend + 逗号(,) 弹出清理第一种:
Command + Shift + K
11.Runpath搜索路径
Runpath 路径修改位置更改为$(inherited) @executable_path/Frameworks
12 证书清理并设置始终信任
1.打开钥匙串 - 转到Apple Worldwide Developer Cert。
2.双击它
3.从“始终信任”更改权限级别以使用系统默认值
4.保存并关闭它
5.重新启动Xcode,清理并构建项目,它应该消失
总结 :作者推荐以上方案如果还没满足你的需求 可以尝试一下两种方案解决。 (反正我是尝试上面的还是没有解决,万能的网友推荐的方式列举了一下)
方案一 :
在Xcode10.2之后明显对Swfit5框架进行了改动 可以看下文章链接 : Swift 5发行说明Xcode 10 .2
工具的下载地址参考5
注:如果工具还是不起效 还是建议卸载Xcode10.2 回退到Xcode10.1解决问题
方案二:
编译时候选项建议经过多次测试发现是Swfit 编译的SDK也是有相关问题的(猜测是Xcode10.1配置文件问题)
解决办法:拿到源码SDK在Xcode10.2上面重新打包 使用最新的SDK发现解决问题 (注意打包的时候如果真机调试最好选择Generic iOS Device选项,因为在发现打包导入IPA也会发生莫名问题)
针对这个问题目前笔者提供以上方案,根据不同Xcode版本使用某一个方法可以直接解决。因为笔者是尝试上面所有方法均无效果。最后面才解决了标题问题。 笔者在这里列举网友提供的方法和自己已经摸索尝试成功解决的方法分享给大家。喜欢的点个赞支持一下
网友评论