Xcode运行出现you don’t have permission to view it的缘由及解决方案

遇到的问题

前不久,群里的好几个小伙伴出现了这个问题,都是老项目升级到Xcode12出现的问题。xcode

这个问题一眼看上去是没有权限引发的,但我想Xcode不会那么傻,本身生成的可执行文件能不给执行权限?点开detail看下:markdown

找到显示的路径并显示包内容,结果没有执行文件。Xcode并无生成可执行文件,我第一反应就是arch那块设置出了问题架构

关于EXCLUDED_ARCHSVALID_ARCHS

EXCLUDED_ARCHS是Xcode12新出的字段,表示的是你不要编译的arch,其他苹果须要的自动会被编译。VALID_ARCHS是Xcode12之前的字段,表示的是容许编译的arch。我的以为EXCLUDED_ARCHS会比较有优点,一旦苹果推出新的cpu arch,那么不须要你本身添加,自动会帮你添加并编译。ui

在Xcode12上新建项目,已经不会出现VALID_ARCHS字段了,老项目若是没有设置过VALID_ARCHS,跑到Xcode12上会自动消失。但若是你设置过VALID_ARCHS,那么该字段会被保留,并移动到了User-Defined模块,Build Settings中拖到最下面就能找到了。spa

分析缘由

群里的问题发现了2种缘由:code

  • 第一种:老项目VALID_ARCHS之前设置了arm64等,可是更新到Xcode12后,逻辑和之前不同了,你还得本身添加x86_64,否则x86_64并不会添加到编译,因此运行模拟器的时候,就会报题目中的错,由于x86_64的可执行文件并无生成。orm

  • 第二种:由于出了M1芯片的Mac电脑,因此Xcode12多了一个模拟器版的arm64架构。但不少项目中含有静态包(.a文件),这些静态包中并无支持这种架构,因此在模拟器运行的时候出错了,这时候小伙伴直接在EXCLUDED_ARCHS中简单的添加了arm64,这样虽然模拟器中运行正常了,可是真机运行的时候就会报题目中的错,由于arm64的可执行文件并无生成。it

如何解决

  1. 若是项目中包含VALID_ARCHS,把这个字段完全删干净。找到你项目的.xcodeproj文件,右键显示包内容,打开project.pbxproj,搜索VALID_ARCHS,将搜索的全部VALID_ARCHS整行删除就好了。io

  2. 正确设置EXCLUDED_ARCHS字段,若是你的电脑不是arm64架构的(目前就M1芯片的),照着以下设置就行:编译

其余可能出现这个报错的缘由及解决

在网上搜寻的时候发现另外一种问题,仍是找到刚才detail中显示路径文件的包内容,里面info.plist文件中Executable file的值和可执行文件的名字不同了,这样致使运行的时候找不到可执行文件,也会报题目中的错误。解决方案就是把项目中info.plist的Executable file改为和可执行文件名字同样就好了。