最近接手了一个因为各种原因项目被废弃了,但是又想再则启动起来的项目。基本的情况就是原先的开发人员已经全部联系不上了,然后就连苹果电脑的开机密码也找不到了,而且开机密码的提示都是“滚,不给密码”。现在有的就是复制在一台Windows上的代码,也不知道什么时候,也不知道什么情况的,然后给到了一份Zip的代码压缩包。解压之后,执行command + B,一下子就一堆错误,所以就希望负责人能再去电脑上找找,看看还能不能找到一份能正常编译通过的代码,但是努力很多番还是没找到,所以就只能让我硬着头皮上解决问题了,那么接下来就来讲述一下大致的解决过程:
一、首先执行pod update --no-repo-update。
由于项目依赖了很多第三方库,而代码又是复制挪动了很多次的,本地相关依赖环境肯定是发生了很大的变化,执行这个库的过程中发现升级了很多版本,应该就是时间久远了。
✘ xiaomifeng@xiaomifengMacBook-Pro ~/xiaomifeng/xiaomifeng master ±✚ pod update --no-repo-update
Update all pods
Analyzing dependencies
Downloading dependencies
Installing AFNetworking 3.2.1
Installing AMapFoundation-NO-IDFA 1.6.9 (was 1.6.3)
Installing AMapLocation-NO-IDFA 2.8.0 (was 2.6.5)
Installing AgoraRtcEngine_iOS 3.6.2 (was 3.5.0.2)
Installing AliyunOSSiOS 2.10.12 (was 2.10.8)
Installing HandyJSON 5.0.2 (was 5.0.1)
Installing HyphenateChat 3.8.1
Installing IQKeyboardManagerSwift 6.5.9 (was 6.5.5)
Installing JXPagingView 2.1.2 (was 2.0.13)
Installing JXSegmentedView 1.3.0 (was 1.0.6)
Installing JYUtils 0.3.3 (was 0.3.0)
Installing MBProgressHUD 1.1.0 (was 1.2.0)
Installing MJRefresh 3.7.5 (was 3.6.1)
Installing SDWebImage 5.12.3 (was 5.11.1)
Installing SJPageViewController 0.0.13 (was 0.0.10)
Installing SocketRocket 0.5.1
Installing TABAnimated 2.6.4 (was 2.6.0)
Installing TZImagePickerController 3.7.6 (was 3.3.2)
Installing UMAPM 1.5.6 (was 1.2.1)
Installing UMCCommon 7.3.6 (was 7.2.9)
Installing UMCPush 4.0.2 (was 3.3.1)
Installing UMDevice 2.2.1 (was 1.2.0)
Generating Pods project
Integrating client project
Pod installation complete! There are 44 dependencies from the Podfile and 48 total pods installed.
[!] Smart quotes were detected and ignored in your Podfile. To avoid issues in the future, you should not use TextEdit for editing it. If you are not using TextEdit, you should turn off smart quotes in your editor of choice.
[!] Unable to read the license file `LICENSE` for the spec `EaseCallKit (3.8.1.1)`
[!] Unable to read the license file `LICENSE` for the spec `EaseCallKit (3.8.1.1)`
执行之后立马就很多报错了,比如:
AFNetworking项目原来使用的3.2.1版本,而升级之后就成了4.0.1版本,那么就使用命令指定了3.2.1版本,然后再执行pod update --no-repo-update,这样AFN的报错就解决了。同理SocketRocket也指定成0.5.1版本,HyphenateChat也指定成3.8.1,再则编译pod库的报错全部解决。
说明:这里要说明一下Podfile.lock文件的使用,可以在执行pod命令前复制出一份来,然后打开这个文件就能看到原来项目依赖库的版本,不过万一没复制,那么执行命令之后的终端上面也会显示was什么版本,这个时候可以截图一份保留。
二、解决library not found for -lSocialWeChat的报错
对于这个报错,其实是很奇怪的,单纯去找这个lSocialWeChat库是找不到的,那么从这报错以及Podfile文件中可以看出“Social”那么就是社交相关的东西,然后在Podfile里果然是有这样的代码在:
# 集成微信
pod 'UMCShare/Social/ReducedWeChat'
既然是这样那说明问题可能就出现在这里,这个可能就是代码移动过程中有关信息或文件丢失了,这个时候我们先把这个库注释掉,就是下面这个样子:
# 集成微信
#pod 'UMCShare/Social/ReducedWeChat'
接着执行
pod update --no-repo-update
这样子相关的库就删除了一遍,然后再把库打开,又是下面这个样子:
# 集成微信
pod 'UMCShare/Social/ReducedWeChat'
接着再次执行
pod update --no-repo-update
经过这几番操作,再次编译代码library not found for -lSocialWeChat的报错已经解决了,虽然这个问题解决了,但是更多的问题还在虎视眈眈。
三、解决Undefined symbol:的报错
Undefined symbol: _Decoder_Interface_init
Undefined symbol: _Decoder_Interface_Decode
Undefined symbol: _Decoder_Interface_exit
Undefined symbol: _Encoder_Interface_init
Undefined symbol: _Encoder_Interface_Encode
Undefined symbol: _Encoder_Interface_exit
这个问题也是很怪,不过从这代码报错中看出,说明的就是编码和解码,还有从xcode上面的提示上也看到是音频的解码和编码,然后再看应该就是使用到的环信第三方依赖的库没有了,那么这个时候就从网上找,竟然有些下载还要钱,不过这里我介绍一个github地址:https://github.com/Hockly/opencore-arm-iOS
直接从上面下载两个文件就可以了,分别是:
libopencore-amrnb.a
libopencore-amrwb.a
把这两个下载之后拖入项目中就成功解决这个问题了。
或者可以参考这两个博客:
https://www.cnblogs.com/gsjxin/p/14011878.html
https://developpaper.com/undefined-symbols-for-architecture-arm64/
四、解决Command PhaseScriptExecution failed with a nonzero exit code的报错
毫不夸张的说,这真是一个大问题,我个人完全没有概念,也是在搜索中学习的,这里要夸一下谷歌,经过多次搜索之后终于在一个油管上的视频给了我莫大的启发。油管地址:https://www.youtube.com/watch?v=L1OY9WKfQbQ,虽然这上面问题一样,但是内容不一样的。里面说到了一个命令:
chmod +x
chmod +x就是赋予用户文件的执行权限.
而Xcode的报错上面也有一个关键词:Permisson denied,并且从其中看看是哪个文件没有权限,按提示的目录路径,依次找到文件所在的文件夹路径,然后在终端中到达该路径,然后执行相关命令,比如我的就执行了:
chmod +x Pods-zixinhui-resources.sh
chmod +x Pods-zixinhui-frameworks.sh
执行了这两个命令之后,另外命令中chmod +x后的文件名是根据Permisson denied报错提示的文件填入的,执行完之后,再次执行command + B,经过漫长的等待,终于终于终于看到了那个两个令人兴奋的字眼:Build Successed!!!!!!!!!!!!!!!!!!!!!!!!
真是不容易啊!太不容易了,这个过程持续了一两天才最后解决了问题。
如果上面的分享帮助到你了,欢迎点赞收藏评论,特别是赞赏支持作者创作,感谢!