今天在终端使用编译脚本编译一个ipa文件包的时候,遇到题目中的错误,在此记录一下处理过程,作为后续学习使用。
一、环境
MAC
二、工具
终端
三、编译脚本
$ sudo xcrun --sdk iphoneos assetutil --info /path/Assets.car > /tmp/Assets.json
上面的脚本是做什么用的呢?这个是在终端在xcode的环境下将ipa包文件中的Assets.car文件反编译为json格式文件,具体Assets文件是什么,请自行查找了解。
四、从ipa包的处理流程
a)、首先是将ipa包文件解压,如下图:
解压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(表现的结果是图片引用会出现问题)
网友评论