我正在参加「掘金·启航计划」
起因:为啥要看Assets.car里都有啥
因为要分析其他app包里的Assets.car,不是自己项目的。查看Assets.car可以了解、分析、利用里面的内容,或了解其实现方式等等
怎么看
- 既然app可以读,那我就建立一个Demo工程,把Assets.car拷贝进去,一定也可以读
- 要读,首先要知道Assets.car里都有啥?怎么知道?
- 用
[UIImage imageNamed:name]就可以获取图片了
开始
- 建立建立一个Demo工程,把Assets.car拷贝进去,编译报错了
Showing All Errors Only
Multiple commands produce '/Users/...../AssetsLook.app/Assets.car'
新建项目会有一个Assets.xcassets,看样子是重名了,删除Assets.xcassets就好了
2. 获取Assets.car的信息,使用如下命令就可以了
xcrun --sdk iphoneos assetutil -I "Assets.car" --output "Assets.carInfo.json"
- 解析json,分析后筛选image
{
"AssetType" : "Image",
"Name" : "1.1_lightmap",
"RenditionName" : "1.1_lightmap.png",
"Scale" : 2,
"SHA1Digest" : "502334189D5CA91B6A6EC87D463757FD63DD63C4ACA44D4CEF5F588D989A23AD",
"SizeOnDisk" : 278208,
"Template Mode" : "automatic"
}
- 用
[UIImage imageNamed:name]获取图片后,展示或者写入文件
进阶
- 利用
Run Script把获取Assets.car的信息步骤自动化
总结
一个有一点用的查看Assets.car的工具就完成了😋,自己实现的好处是可以了解细节,编写代码也更方便根据自己的需求自定义。比如可以获取除了图片以外的其他类型的信息,Colors、AR assets、Machine learning assets等