前不久,群里的好几个小伙伴出现了这个问题,都是老项目升级到Xcode12出现的问题。xcode
这个问题一眼看上去是没有权限引发的,但我想Xcode不会那么傻,本身生成的可执行文件能不给执行权限?点开detail看下:markdown
找到显示的路径并显示包内容,结果没有执行文件。Xcode并无生成可执行文件,我第一反应就是arch那块设置出了问题架构
EXCLUDED_ARCHS
和VALID_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
若是项目中包含VALID_ARCHS
,把这个字段完全删干净。找到你项目的.xcodeproj
文件,右键显示包内容,打开project.pbxproj
,搜索VALID_ARCHS
,将搜索的全部VALID_ARCHS
整行删除就好了。io
正确设置EXCLUDED_ARCHS
字段,若是你的电脑不是arm64架构的(目前就M1芯片的),照着以下设置就行:编译
在网上搜寻的时候发现另外一种问题,仍是找到刚才detail中显示路径文件的包内容,里面info.plist文件中Executable file
的值和可执行文件的名字不同了,这样致使运行的时候找不到可执行文件,也会报题目中的错误。解决方案就是把项目中info.plist的Executable file
改为和可执行文件名字同样就好了。