iOS 9.0、9.1、9.2上发生奇怪的崩溃

在具有Xcode 8和Swift 3的设备上调试时,显示具有Adobe RGB(1998)色彩空间的图像对我来说是可行的,但在iOS 9上没有发布。更改色彩空间使其可以工作。 —安德鲁(Andrew)2016年11月16日在16:59

让我们从发生在我身上的事情开始。 有一天,我收到用户的一封电子邮件,她说应用程序不断崩溃。 多亏了Fabric,我知道她在使用iPhone 6 plus和iOS 9.2。 从崩溃日志中,我知道加载子视图后应用程序崩溃的唯一线索,但是我无法在调试和发布模式下从自己的角度重现它。 环顾四周后,我可以仅通过存档和导出特定设备(iOS 9.0、9.1、9.2)进行复制。

看来这使我的生活更轻松,但这只是故事的开始。 导出ipa文件所需的时间太长,因此一旦尝试执行某些操作,则需要五到十分钟的时间来检查结果。 不幸的是,崩溃日志使我误入歧途。 它显示了相同崩溃点的不一致轨迹(您可以在本文的和处找到一些示例),并且它随机发生在不同位置。 我以为是内存泄漏问题,或者是自定义字体,自定义UI或情节提要等问题。

经过三天的尝试和失败,我找到了一个帖子。 这与我的情况并不完全相似。 就我而言,使用电缆进行调试时不会在模拟器或设备中发生,没有与“ ERROR ITMS-90682:Invalid Bundle”有关的线索。

Xcode 8在iOS 9.2及更低版本上崩溃
当我使用Xcode 8 GM Seed构建我的应用程序并在设备或模拟器下的iOS 9.2上运行它时,我感到很奇怪…… stackoverflow.com

但是,我决定像没有希望的猴子那样尝试脚本,但是很惊讶它正常工作。

#!/bin/bash 
DIRECTORY=$1
echo "------------------------------"
echo "Passed Resources with xcassets folder argument is "
echo "------------------------------"
echo "Processing asset:"

find "$DIRECTORY" -name '*png' -print0 | while read -d $'\0' file;
do
echo "---------$file"
sips -m "/System/Library/Colorsync/Profiles/sRGB Profile.icc" "$file" --out "$file"
done

echo "------------------------------"
echo "script successfully finished"
echo "------------------------------"

我已经在iOS上工作了很长时间,但是iOS的崩溃日志对我来说从来都不是一件容易的事。 再一次,它欺骗了我。