iOS 关于app store下载的崩溃,其他测试(真机、打包)不崩溃的问题

首先附上崩溃记录的截图

iOS 关于app store下载的崩溃,其他测试(真机、打包)不崩溃的问题_第1张图片
iOS 关于app store下载的崩溃,其他测试(真机、打包)不崩溃的问题_第2张图片

1、其他人的手机怎么都不崩溃,单单这个手机出现各种闪退的问题,于是我把用户手机插到电脑上进行Xcode真机测试;
2、然而一点问题都没出现,于是我猜测debug下屏蔽了部分crash的问题,于是


iOS 关于app store下载的崩溃,其他测试(真机、打包)不崩溃的问题_第3张图片

结果崩溃了,哈哈,要的就是这种效果,【问题得到了复现】

3、然后接下来就是解决问题:

原理:在 Xcode 8 中,当你资源文件中[含有16位图]或者[图片显示模式γ值为'P3']且iOS targets设定为iOS 9.3以下就会出现这个问题. 如果你的app需要支持广色域显示的话,那你必须得把target设置成iOS 9.3+,相反,如果你的app不需要支持广色域且你想兼容 iOS 9.3 之前的项目,你就得把所有的16位的或者显示模式为'P3'图片全都替换成8位模式的SRGB颜色的图片。

步骤:

1.导出项目的 ipa 文件

2. 解压该ipa文件. 解压后的目录里面会有一个包含着你的 app bundle 文件的 Payload 文件夹.

3. 打开终端病切换到你的app的Payload文件夹下的 .app bundle 文件夹内,形式如下:

cd path/to/Payload/your.app

4. 用 find 命令定位到 Assets.car 文件 .app bundle , 形式如下:

find . -name 'Assets.car'
5. 使用 assetutil 命令找到任何包含着 16-bit or P3 的资源文件, 对每个 Assets.car 之行以下命令 :

示例sudo xcrun --sdk iphoneos assetutil --info/path/to/a/Assets.car> /tmp/Assets.json
$ sudo xcrun --sdk iphoneos assetutil --info ./Assets.car > /tmp/Assets.json
注:这里的/path/to/a/Assets.car指的是Assets.car的路径,不要直接复制!!!使用上一步find命令的结果。
打开finder   然后 cmd+shirft+G  粘上/tmp/Assets.json
iOS 关于app store下载的崩溃,其他测试(真机、打包)不崩溃的问题_第4张图片
iOS 关于app store下载的崩溃,其他测试(真机、打包)不崩溃的问题_第5张图片
Assets.json
6.  打开上一步生成的 /tmp/Assets.json 文件并查找包含有 “DisplayGamut": “P3” 或者相关的内容.  这段json的"Name"字段对应的值就是16位或显示的γ值为P3的资源文件名.

找出这个图片icon-about


iOS 关于app store下载的崩溃,其他测试(真机、打包)不崩溃的问题_第6张图片

iOS 关于app store下载的崩溃,其他测试(真机、打包)不崩溃的问题_第7张图片


iOS 关于app store下载的崩溃,其他测试(真机、打包)不崩溃的问题_第8张图片

再次编译就好了,不报错了。打包测试之后也OK了。

你可能感兴趣的:(iOS 关于app store下载的崩溃,其他测试(真机、打包)不崩溃的问题)