写代码查看Assets.car里都有啥

468 阅读1分钟

我正在参加「掘金·启航计划」

代码地址:github.com/dacaiguoguo…

起因:为啥要看Assets.car里都有啥

因为要分析其他app包里的Assets.car,不是自己项目的。查看Assets.car可以了解、分析、利用里面的内容,或了解其实现方式等等


怎么看

  1. 既然app可以读,那我就建立一个Demo工程,把Assets.car拷贝进去,一定也可以读
  2. 要读,首先要知道Assets.car里都有啥?怎么知道?
  3. [UIImage imageNamed:name]就可以获取图片了

开始

  1. 建立建立一个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"
  1. 解析json,分析后筛选image
{
    "AssetType" : "Image",
    "Name" : "1.1_lightmap",
    "RenditionName" : "1.1_lightmap.png",
    "Scale" : 2,
    "SHA1Digest" : "502334189D5CA91B6A6EC87D463757FD63DD63C4ACA44D4CEF5F588D989A23AD",
    "SizeOnDisk" : 278208,
    "Template Mode" : "automatic"
}
  1. [UIImage imageNamed:name]获取图片后,展示或者写入文件

进阶

  • 利用Run Script把获取Assets.car的信息步骤自动化 image.png

总结

一个有一点用的查看Assets.car的工具就完成了😋,自己实现的好处是可以了解细节,编写代码也更方便根据自己的需求自定义。比如可以获取除了图片以外的其他类型的信息,Colors、AR assets、Machine learning assets等