美文网首页
关于特殊的SIGSEGV引起的程序崩溃

关于特殊的SIGSEGV引起的程序崩溃

作者: 风之魄 | 来源:发表于2018-01-02 15:36 被阅读0次

    近期我们的程序总是在IOS 9.0~9.3之间的系统版本上边发生崩溃,还总是莫名其妙的崩溃,从集成的腾讯Bugly上边查看崩溃日志,总是显示

    类似于这样的崩溃日志,数字可以不同,显示的崩溃的现在在main函数,由于公司的苹果手机都不是9.1,和9.2.1的系统,并且在模拟器上边完全没有问题,这就比较蛋疼了,完全无从搞起。最后从网上研究好多东西,终于找到是由于P3图片的问题,造成的崩溃

    接下来就是如何查找自己项目里面的P3或者16位的图片了,

    查找方法是:

    1.创建一个程序的.ipa文件

    2.将此.ipa文件修改为.zip的文件

    3、解压此.zip文件,将生成一个Payload文件,包含一个含有你程序的一个文件

    4、打开终端,cd到那个你的程序的那个文件,或者直接拖动那个程序文件到终端

    5、使用find 命令定位到Assets.car文件

    find .-name 'Assets.car'

    6、使用assetutil 命令找到包含P3 或者16位的资料文件, 对此Assets.car执行以下命令

    sudo xcrun --sdk iphoneos assetutil --info /path/to/a/Assets.car > /tmp/Assets.json

    注:将黑体字部分替换成第五步查找到的返回值,不能使用这个

    7、打开上一步生成的/tmp/Assets.json文件,在终端输入 open /tmp/Assets.json;

    对应的就会打开一个文件

    然后查找 BitsPerComponent 字段,值是8的是正常的,是16的就是不正常,还有就是查找DisplayGamut字段,值为P3的就业是不正常的,

    8、把所有不正常的图片全部替换掉,就能完美解决了

    9、在不替换图片的情况下,来修改图片解决,网上看的有两种方法,但是我只用了一种,另一只没用

    第一种、下面我们使用ColorSync实用工具将这个图片文件修改下找到这个图片然后按照下面方法

    最后点击应用就好了。

    第二种方法,

    这里我们使用bash script直接处理所有图片为正确格式,这样我们就不用去定位是哪个图片的问题了,或许更方便一些。

    #!/bin/bashDIRECTORY=$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"------------------------------"

    第二种方法纯属copy大神的,我自己没有使用过。希望对你有用。

    相关文章

      网友评论

          本文标题:关于特殊的SIGSEGV引起的程序崩溃

          本文链接:https://www.haomeiwen.com/subject/bqnfnxtx.html