xcrun: error: SDK "iphoneos" cannot be located

今天在终端使用编译脚本编译一个ipa文件包的时候,遇到题目中的错误,在此记录一下处理过程,作为后续学习使用。

一、环境

    MAC

二、工具

    终端

三、编译脚本

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

上面的脚本是做什么用的呢?这个是在终端在xcode的环境下将ipa包文件中的Assets.car文件反编译为json格式文件,具体Assets文件是什么,请自行查找了解。

四、从ipa包的处理流程

a)、首先是将ipa包文件解压,如下图:


xcrun: error: SDK
解压test.ipa包

a-1)、解压的方式有两种:

    1、在test.ipa添加后缀.zip(即 test.ipa.zip)
    2、按照图中的方式直接解压
    解压后会得到一个Payload文件,文件中是test.app文件

b)、打开终端,执行以下指令

$ cd /Users/userName/Downloads/Payload 

将Payload文件拖到终端就可以显示上面的路径了

c)、执行指令

$ find . -name 'Assets.car'

./test.app/Assets.car

执行以上指令,会打印一个路径,该路径就是替换上面加粗path用的

d)、执行脚本

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

以上指令就是将test.app文件下的Assets.car文件编译为Assets.json文件
箭头(>) 右侧的路径就是最终生成文件存放的路径,可自行指定
d-1)、执行以上脚本可能会遇到错误xcrun: error: SDK "iphoneos" cannot be located,这个错误是没有指定编译环境造成的

解决方法:给Xcode命令行工具指定路径

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

//查看sdk路径

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

//查看所有可用sdk

$ xcodebuild -showsdks

如果电脑有多个不同版本的xcode(Xcode1, Xcode2....),请指定需要用到的xcode

全部执行完毕后,在重新执行脚本指令就可以在tmp文件下查看生成的json文件

d-2)、如果执行上面的脚本运行没有错误,就可以在tmp文件下直接查看生成的json文件了

mark:

1、如何查看tmp文件
打开Finder,使用快捷键command + shift + G,然后输入  /tmp  就可以

2、什么时候会用到这种操作

一般ipa上架后可能会出现一些错误,导致线上产品在部分系统版本的手机上会出现闪退问题,此时可能的原因有多种,这里的操作是查看图片文件存在的问题,比如图片使用了16-bit or P3 assets,在iOS9.3以上没问题,所以要往下兼容,需要改成8-bit sRGB assets(表现的结果是图片引用会出现问题)

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

你可能感兴趣的:(xcrun: error: SDK "iphoneos" cannot be located)