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改爲和可執行文件名字同樣就好了。

相關文章
相關標籤/搜索