xcrun: error: SDK "iphoneos" cannot be located

今天在終端使用編譯腳本編譯一個ipa文件包的時候,遇到題目中的錯誤,在此記錄一下處理過程,作為后續(xù)學(xué)習(xí)使用。

一、環(huán)境

? ? MAC

二、工具

? ? 終端

三、編譯腳本

$ sudo xcrun --sdk iphoneos assetutil --info /path/Assets.car > /tmp/Assets.json

上面的腳本是做什么用的呢?這個是在終端和xcode的環(huán)境下將ipa包文件中的Assets.car文件反編譯為json格式文件,具體Assets文件是什么,請自行查找了解。

四、從ipa包的處理流程

a)、首先是將ipa包文件解壓,如下圖:


解壓test.ipa包

a-1)、解壓的方式有兩種:

????1、在test.ipa添加后綴.zip(即 test.ipa.zip)
????2、按照圖中的方式直接解壓
????解壓后會得到一個Payload文件,文件中是test.app文件

b)、打開終端,執(zhí)行以下指令

$ cd /Users/userName/Downloads/Payload?

將Payload文件拖到終端就可以顯示上面的路徑了

c)、執(zhí)行指令

$ find . -name 'Assets.car'

./test.app/Assets.car

執(zhí)行以上指令,會打印一個路徑,該路徑就是替換上面加粗path用的

d)、執(zhí)行腳本

$ sudo xcrun --sdk iphoneos assetutil --info ./test.app/Assets.car > /tmp/Assets.json

以上指令就是將test.app文件下的Assets.car文件編譯為Assets.json文件
箭頭(>) 右側(cè)的路徑就是最終生成文件存放的路徑,可自行指定
d-1)、執(zhí)行以上腳本可能會遇到錯誤xcrun: error: SDK "iphoneos" cannot be located,這個錯誤是沒有指定編譯環(huán)境造成的

解決方法:給Xcode命令行工具指定路徑

$ sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer/

//查看sdk路徑

$?xcrun --sdk iphoneos --show-sdk-path

//查看所有可用sdk

$?xcodebuild -showsdks

如果電腦有多個不同版本的xcode(Xcode1, Xcode2....),請指定需要用到的xcode

全部執(zhí)行完畢后,再重新執(zhí)行腳本指令就可以在tmp文件下查看生成的json文件

d-2)、如果執(zhí)行上面的腳本運行沒有錯誤,就可以在tmp文件下直接查看生成的json文件了

mark:

1、如何查看tmp文件
打開Finder,使用快捷鍵command + shift + G,然后輸入? /tmp??就可以

2、什么時候會用到這種操作

一般ipa上架后可能會出現(xiàn)一些錯誤,導(dǎo)致線上產(chǎn)品在部分系統(tǒng)版本的手機上會出現(xiàn)閃退問題,此時可能的原因有多種,這里的操作是查看圖片文件存在的問題,比如圖片使用了16-bit or P3 assets,在iOS9.3以上沒問題,所以要往下兼容,需要改成8-bit sRGB assets(表現(xiàn)的結(jié)果是圖片引用會出現(xiàn)問題)

如有不足,歡迎指出。Thanks Regards.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容