先來看看友盟線上錯誤是否和我所犯一樣荣恐,而且瞬間鋪天蓋地的報錯反饋累贤,每個都有所不同,也就是不規(guī)則報錯硼被。
Application received signal SIGSEGV
2
(null)
3
((
4
0 CoreFoundation 0x0000000182fa1918 <redacted> + 148
5
1 libobjc.A.dylib 0x000000018260ff80 objc_exception_throw + 56
6
2 CoreFoundation 0x0000000182fa1848 <redacted> + 0
7
3 YZGX 0x000000010027df7c YZGX + 1957756
8
4 libsystem_platform.dylib 0x0000000182c0593c _sigtramp + 52
9
5 CoreFoundation 0x0000000182f2eaac <redacted> + 124
10
6 CoreFoundation 0x0000000183007f9c <redacted> + 680
11
7 CoreFoundation 0x0000000182fabd68 <redacted> + 1408
12
8 CoreFoundation 0x0000000182e870f4 _CFXNotificationPost + 368
13
9 Foundation 0x0000000183876d2c <redacted> + 68
14
10 UIKit 0x0000000187f40ef8 <redacted> + 320
15
11 UIKit 0x000000018800d7e0 <redacted> + 128
16
12 UIKit 0x0000000187f40d64 <redacted> + 100
17
13 UIKit 0x0000000187f412e0 <redacted> + 700
18
14 UIKit 0x0000000187f394ec <redacted> + 152
19
15 FrontBoardServices 0x0000000184557790 <redacted> + 184
20
16 FrontBoardServices 0x0000000184557b10 <redacted> + 56
21
17 CoreFoundation 0x0000000182f58efc <redacted> + 24
22
18 CoreFoundation 0x0000000182f58990 <redacted> + 540
23
19 CoreFoundation 0x0000000182f56690 <redacted> + 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 <redacted> + 4
29
)
30
這是我上次打包上線后出現(xiàn)的報錯嚷硫。每次報錯的內(nèi)存地址不同夺溢,我一直以為是我代碼問題,在根據(jù)網(wǎng)上查詢的反編譯內(nèi)容看過之后嘉汰,忽然發(fā)現(xiàn)状勤,它是不規(guī)則報錯,瞬間心情不好密似。
冷靜下來發(fā)現(xiàn):
1.報錯內(nèi)容一致葫盼,SIGSEGV一般為內(nèi)存溢出,內(nèi)存泄露。
2.報錯版本為iOS9.0-iOS9.2.1之間的系統(tǒng)蟆盹;
3.Xcode10打包闺金;
4.使用xcassets管理圖片;
5.xcassets中有非jpg的圖片寨昙;
注:該問題掀亩,打蒲公英的測試包無法復(fù)現(xiàn),直接在手機上運行無法復(fù)現(xiàn)尸红,模擬器上無法復(fù)現(xiàn)刹泄。
之后我去蘋果官網(wǎng)查看怎爵,IOS9.0-9.2.1之間Xcode10發(fā)布后蘋果對圖片加密又進行了更改,多了一套加密方法姆蘸。導(dǎo)致了這幾個小系統(tǒng)的兼容性芙委。
如果發(fā)生類似問題,提供以下方案:
方案一:如果沒有使用iOS12 的新功能灌侣,建議暫時用Xcode9打包侧啼,等待Xcode10.1版本修復(fù)該問題;
方案二:把xcassets圖片放到bundle里痊乾;
方案三:最低版本支持設(shè)置為iOS9.3及以上;
方案四:把xcassets圖片全部替換成jpg蛾魄,必須全部替換,不然已然存在crash風(fēng)險舌狗;
方案五:把Xcode9打包生成的Assets.car替換Xcode10打包生成的Assets.car描馅。