友盟报错“Application received signal SIGSEGV”

先来看看友盟线上错误是否和我所犯一样,而且瞬间铺天盖地的报错反馈,每个都有所不同,也就是不规则报错。

Application received signal SIGSEGV
2
(null)
3
((
4
    0 CoreFoundation 0x0000000182fa1918  + 148
5
    1 libobjc.A.dylib 0x000000018260ff80 objc_exception_throw + 56
6
    2 CoreFoundation 0x0000000182fa1848  + 0
7
    3 YZGX 0x000000010027df7c YZGX + 1957756
8
    4 libsystem_platform.dylib 0x0000000182c0593c _sigtramp + 52
9
    5 CoreFoundation 0x0000000182f2eaac  + 124
10
    6 CoreFoundation 0x0000000183007f9c  + 680
11
    7 CoreFoundation 0x0000000182fabd68  + 1408
12
    8 CoreFoundation 0x0000000182e870f4 _CFXNotificationPost + 368
13
    9 Foundation 0x0000000183876d2c  + 68
14
    10 UIKit 0x0000000187f40ef8  + 320
15
    11 UIKit 0x000000018800d7e0  + 128
16
    12 UIKit 0x0000000187f40d64  + 100
17
    13 UIKit 0x0000000187f412e0  + 700
18
    14 UIKit 0x0000000187f394ec  + 152
19
    15 FrontBoardServices 0x0000000184557790  + 184
20
    16 FrontBoardServices 0x0000000184557b10  + 56
21
    17 CoreFoundation 0x0000000182f58efc  + 24
22
    18 CoreFoundation 0x0000000182f58990  + 540
23
    19 CoreFoundation 0x0000000182f56690  + 724
24
    20 CoreFoundation 0x0000000182e85680 CFRunLoopRunSpecific + 384
25
    21 GraphicsServices 0x0000000184394088 GSEventRunModal + 180
26
    22 UIKit 0x0000000187cfcd90 UIApplicationMain + 204
27
    23 YZGX 0x00000001001991c8 YZGX + 1020360
28
    24 libdyld.dylib 0x0000000182a268b8  + 4
29
)
30

这是我上次打包上线后出现的报错。每次报错的内存地址不同,我一直以为是我代码问题,在根据网上查询的反编译内容看过之后,忽然发现,它是不规则报错,瞬间心情不好。

冷静下来发现:
1.报错内容一致,SIGSEGV一般为内存溢出,内存泄露。
2.报错版本为iOS9.0-iOS9.2.1之间的系统;
3.Xcode10打包;
4.使用xcassets管理图片;
5.xcassets中有非jpg的图片;

注:该问题,打蒲公英的测试包无法复现,直接在手机上运行无法复现,模拟器上无法复现。
之后我去苹果官网查看,IOS9.0-9.2.1之间Xcode10发布后苹果对图片加密又进行了更改,多了一套加密方法。导致了这几个小系统的兼容性。

如果发生类似问题,提供以下方案:
方案一:如果没有使用iOS12 的新功能,建议暂时用Xcode9打包,等待Xcode10.1版本修复该问题;

方案二:把xcassets图片放到bundle里;

方案三:最低版本支持设置为iOS9.3及以上;

方案四:把xcassets图片全部替换成jpg,必须全部替换,不然已然存在crash风险;

方案五:把Xcode9打包生成的Assets.car替换Xcode10打包生成的Assets.car。

你可能感兴趣的:(友盟报错“Application received signal SIGSEGV”)