编译错误 Undefined symbol "_CTRadioAccessTechnologyNRNSA" & 指定版本xcode升级

编译错误 Undefined symbol "_CTRadioAccessTechnologyNRNSA"

上周拉下来新代码准备跑一遍测试用例时,真机编译下,遇到编译错误,如下图。


image.png

查看详细信息,大概提示是

Undefined symbols for architecture arm64:
"_CTRadioAccessTechnologyNRNSA", referenced from:
+[xxxx xxx:] in xxxx(xxxxx.o)
"_CTRadioAccessTechnologyNR", referenced from:
+[xxxx xxx:] in xxxx(xxxxx.o)
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

先说答案:要升级到xcode12.1以上,即可编译通过。

image.png

尝试删除pods和clean build之后重新编译,问题仍旧。
询问同事们,都没有遇到这个问题,并收到建议试试模拟器编译是否正常,尝试编译仍然报同样错误,同事都有其他事情要忙,我这个新手于是开始搜索自救。

一开始以为_CTRadioAccessTechnologyNRNSA是个私有库里的内容,没有提供关键信息,搜索看到以下相关文章,逐一尝试都没有解决,且build setting相关的link flag和build architecture 相关设置我这里都是对的,无需修改。

https://www.jianshu.com/p/b38acdcd4fcd
https://www.jianshu.com/p/11151dbd5c80
https://www.jianshu.com/p/0b13a9f2a4d7

既然其他人同样最新代码编译没有问题,设置也一样,那一定是我这里的问题,我开始怀疑是我的xcode版本问题。
最后补上关键字_CTRadioAccessTechnologyNRNSA发现,搜到一条结果,情况高度相似,果然需要升级xcode:https://github.com/dcloudio/native-docs/issues/30。

指定版本xcode升级

作为半个小白,我遇到一个比较low的问题——怎么升级xcode到指定版本?

因为项目流水线目前使用的xcode编译版本是12.2,且当前最新的12.5版本下编译仍不支持,会出现一些编译错误需要额外设置,为保证使用方便,当然是使用流水线一致的版本为佳。

最后查到,apple官方提供了xcode历史版本的xip包下载,下载后解压会出来一个xcode.app,如果无需保留2个版本,将解压完成的xcode.app直接拖动到系统的“应用程序”目录下,直接替换覆盖即可。

apple官方xcode历史版本下载:
https://developer.apple.com/download/more/

xcode xip包怎么安装:
https://www.codenong.com/43663097/
https://www.reddit.com/r/Xcode/comments/bezao8/i_downloaded_the_latest_xcode_xip_file_do_i_need/

你可能感兴趣的:(编译错误 Undefined symbol "_CTRadioAccessTechnologyNRNSA" & 指定版本xcode升级)