今天在終端使用編譯腳本編譯一個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包文件解壓,如下圖:

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)問題)