当我使用Xcode8 GM Seed构建我的应用程序,并在设备或模拟器下面的iOS 9.2上运行它时,在应用程序启动期间或应用程序启动几秒钟后,我得到奇怪的EXC_BAD_ACCESS崩溃。崩溃总是发生在不同的地方(添加子视图、[UIImage imageNamed:]
、应用程序代理的main方法等)。当我在iOS 9.3+或10上运行它时,我不会得到这些崩溃,当我用Xcode7构建并在iOS 9.2及更低版本上运行时,我也不会得到这些崩溃。其他人也有类似的经历吗?这是Xcode8的一个已知问题吗?
发布于 2016-09-12 23:25:37
请参阅接受的答案https://forums.developer.apple.com/thread/60919
您可以使用Preview.app将16位资产保存为8位资产
如何解决"ERROR ITMS-90682: Invalid Bundle - 'Payload/XXXXX/Assets.car‘下的资产目录不能包含16位或P3资产,如果应用程序支持iOS 8或更早版本。“
对于Xcode8 GM,如果您在针对早于iOS 9.3的iOS版本的应用程序提交中包含16位或P3资产,则会发生此错误。如果您的应用程序需要宽色彩功能,则必须将部署目标更改为iOS 9.3或更高版本。如果您的应用程序不需要宽颜色功能,并且您希望将其部署到较旧的iOS版本,那么您应该使用8位sRGB资源替换所有16位或P3资源。您可以通过在来自iTunes连接的错误消息中指定的资产目录上运行“assetutil”来查找16位或P3资产。以下步骤概述了该过程:
sudo xcrun --sdk iphoneos assetutil --info /path/to/a/Assets.car > /tmp/Assets.json
更新:如果您的部署目标设置为8.3或8.4,并且您有一个资产目录,那么即使您实际上没有16位或P3资产,您也会收到相同的错误消息。在这种情况下,您需要将部署目标降低到8.2,或者将其向上移动到9.x。
发布于 2016-09-19 18:29:59
我希望这个bash脚本能帮助你。输入参数是包含项目所有xcassets的目录。此脚本会将sRGB配置文件设置为所有pngs。它帮助了我:)
#!/bin/bash
DIRECTORY=$1
echo "------------------------------"
echo "Passed Resources with xcassets folder argument is <$DIRECTORY>"
echo "------------------------------"
echo "Processing asset:"
XSAASSETSD="$(find "$DIRECTORY" -name '*.xcassets')"
for xcasset in $XSAASSETSD
do
echo "---$xcasset"
IMAGESETS="$(find "$xcasset" -name '*.imageset')"
for imageset in $IMAGESETS
do
echo "------$imageset"
FILES="$(find "$imageset" -name '*.png')"
for file in $FILES
do
echo "---------$file"
sips -m "/System/Library/Colorsync/Profiles/sRGB Profile.icc" $file --out $file
done
done
done
echo "------------------------------"
echo "script successfully finished"
echo "------------------------------"
发布于 2016-09-20 05:13:14
我能够重现这个问题,它看起来确实与资产目录中的图像有关。Filed a bug with Apple (附带示例项目)
Apple Bug Reporter: 28371396
https://stackoverflow.com/questions/39404285
复制相似问题