iOS 11.3.1下App启动崩溃遭App Store拒审,求排查原因
针对App Store启动崩溃拒审的排查方案
先给你拆解下苹果提供的崩溃日志里的核心线索:
- 崩溃类型:
EXC_CRASH (SIGABRT),这通常是未捕获的Objective-C异常触发了主动终止 - 崩溃发生在主线程(Thread 0),说明问题出在启动流程的核心代码里
- 苹果测试设备的系统版本是iPhone OS 11.3.1 (15E302)
- 你的代码在崩溃栈中的关键地址:
0x100acde90(这个内存地址需要符号化才能定位到具体代码行)
下面是按优先级排序的排查步骤:
1. 先符号化崩溃日志,定位具体崩溃代码
现在的日志里全是内存地址,看不到具体的方法和文件,必须先完成符号化:
- 打开Xcode的
Window > Organizer,选择Crashes面板,把苹果提供的崩溃日志直接拖进去,Xcode会自动帮你符号化(前提是你保留了提交版本的.dSYM文件和对应代码) - 如果Xcode自动符号化失败,用
atos命令手动处理:
这里atos -o YourAppName.app/YourAppName -arch arm64 -l 0x1009f0000 0x100acde900x1009f0000是你的App加载基地址(日志里bfwsqy 0x0000000100a9fd9c 0x1009f0000 + 720284中的第二个地址),0x100acde90是崩溃栈里你的代码地址。符号化后就能精准定位到崩溃的方法。
2. 重点测试iOS 11.3.1版本的设备
你自己测试的机型大概率没覆盖这个系统版本,苹果的测试设备用的就是iOS 11.3.1,有些API在这个版本存在兼容性问题:
- 找一台升级到iOS 11.3.1的设备(或用Xcode模拟器选择该版本),安装你提交的Release包测试,看能否复现崩溃
- 检查启动流程中用到的API,有没有在iOS 11.3.1中被废弃、变更行为的情况
3. 排查启动流程中的异常点
崩溃发生在启动阶段,重点检查AppDelegate的application:didFinishLaunchingWithOptions:及相关初始化代码:
- 有没有未处理的空指针访问?比如调用了
nil对象的方法,或者访问了数组越界的元素 - 有没有同步的耗时操作阻塞主线程?比如启动时同步请求网络、加载大文件,触发系统看门狗(Watchdog)终止App
- 有没有依赖的资源文件在打包时被遗漏?比如图片、配置文件,Release打包时可能被误删
4. 检查Release模式下的编译差异
你自己测试的可能是Debug包,而提交的是Release包,两者编译选项不同可能导致崩溃:
- 查看Build Settings里的
Optimization Level,Release模式下如果开了Fastest, Smallest,有些代码在优化后会出现逻辑问题 - 检查是否开启
Enable Zombie Objects?Debug模式下通常会开启,能捕获空指针访问,但Release模式下没开,会直接崩溃 - 验证第三方库的兼容性,有些第三方库在Release模式下存在隐藏bug
5. 验证权限配置是否完整
虽然启动崩溃不一定是权限问题,但也要确认:
- Info.plist里的隐私权限描述是否齐全?比如相机、相册、定位等,如果启动时用到这些权限但没加描述,可能触发崩溃
附上苹果提供的完整崩溃日志:
Incident Identifier: 1CABA1F8-5294-4432-AA91-7C4F680C30ED CrashReporter Key: 5482aa07df93439045718ce254e6392cce5ade36 Hardware Model: xxx Process: bfwsqy [1829] Path: /private/var/containers/Bundle/Application/F359F454-6131-4447-ABC3-25F759E25C05/***.app/*** Identifier: com.*** Version: 2.0.7.3 (2.0.7) Code Type: ARM-64 (Native) Role: Foreground Parent Process: launchd [1] Coalition: com.*** [756] Date/Time: 2018-05-08 09:25:53.3872 +0800 Launch Time: 2018-05-08 09:24:54.2355 +0800 OS Version: iPhone OS 11.3.1 (15E302) Baseband Version: 6.55.00 Report Version: 104 Exception Type: EXC_CRASH (SIGABRT) Exception Codes: 0x0000000000000000, 0x0000000000000000 Exception Note: EXC_CORPSE_NOTIFY Triggered by Thread: 0 Application Specific Information: abort() called Filtered syslog: None found Last Exception Backtrace: (0x1825cad8c 0x1817845ec 0x182563750 0x1825508ac 0x100acde90 0x18c1a6ee0 0x18c254e98 0x18c254354 0x18c253c90 0x18c253720 0x18c247424 0x18c19f770 0x18674125c 0x1867453ec 0x1866b1aa0 0x1866d95d0 0x1866da450 0x182572910 0x182570238 0x182570884 0x182490da8 0x184473020 0x18c47178c 0x100a9fd9c 0x181f21fc0) Thread 0 name: Dispatch queue: com.apple.main-thread Thread 0 Crashed: 0 libsystem_kernel.dylib 0x00000001820512ec 0x18202f000 + 140012 1 libsystem_pthread.dylib 0x00000001821f2288 0x1821ef000 + 12936 2 libsystem_c.dylib 0x0000000181fbfd0c 0x181f5d000 + 404748 3 libc++abi.dylib 0x000000018175a2c8 0x181759000 + 4808 4 libc++abi.dylib 0x000000018175a470 0x181759000 + 5232 5 libobjc.A.dylib 0x00000001817848d4 0x18177c000 + 35028 6 libc++abi.dylib 0x000000018177437c 0x181759000 + 111484 7 libc++abi.dylib 0x0000000181773f78 0x181759000 + 110456 8 libobjc.A.dylib 0x00000001817847ac 0x18177c000 + 34732 9 CoreFoundation 0x0000000182490e18 0x182485000 + 48664 10 GraphicsServices 0x0000000184473020 0x184468000 + 45088 11 UIKit 0x000000018c47178c 0x18c154000 + 3266444 12 bfwsqy 0x0000000100a9fd9c 0x1009f0000 + 720284 13 libdyld.dylib 0x0000000181f21fc0 0x181f21000 + 4032 Thread 1 name: com.apple.uikit.eventfetch-thread Thread 1: 0 libsystem_kernel.dylib 0x000000018202fe08 0x18202f000 + 3592 1 libsystem_kernel.dylib 0x000000018202fc80 0x18202f000 + 3200 2 CoreFoundation 0x0000000182572e40 0x182485000 + 974400 3 CoreFoundation 0x0000000182570908 0x182485000 + 964872 4 CoreFoundation 0x0000000182490da8 0x182485000 + 48552 5 Foundation 0x0000000182f05674 0x182efd000 + 34420 6 Foundation 0x0000000182f0551c 0x182efd000 + 34076 7 UIKit 0x000000018c1567e4 0x18c154000 + 10212 8 Foundation 0x0000000183015efc 0x182efd000 + 1150716 9 libsystem_pthread.dylib 0x00000001821f1220 0x1821ef000 + 8736 10 libsystem_pthread.dylib 0x00000001821f1110 0x1821ef000 + 8464 11 libsystem_pthread.dylib 0x00000001821efb10 0x1821ef000 + 2832 Thread 2: 0 libsystem_kernel.dylib 0x0000000182051610 0x18202f000 + 140816 1 libsystem_c.dylib 0x0000000181f6a12c 0x181f5d000 + 53548 2 libsystem_c.dylib 0x0000000181fd2ef4 0x181f5d000 + 483060 3 bfwsqy 0x0000000100ed6aa8 0x1009f0000 + 5139112 4 bfwsqy 0x0000000100ed46d4 0x1009f0000 + 5129940 5 libsystem_pthread.dylib 0x00000001821f1220 0x1821ef000 + 8736 6 libsystem_pthread.dylib 0x00000001821f1110 0x1821ef000 + 8464 7 libsystem_pthread.dylib 0x00000001821efb10 0x1821ef000 + 2832 Thread 3 name: com.apple.NSURLConnectionLoader Thread 3: 0 libsystem_kernel.dylib 0x000000018202fe08 0x18202f000 + 3592 1 libsystem_kernel.dylib 0x000000018202fc80 0x18202f000 + 3200 2 CoreFoundation 0x0000000182572e40 0x182485000 + 974400 3 CoreFoundation 0x0000000182570908 0x182485000 + 964872 4 CoreFoundation 0x0000000182490da8 0x182485000 + 48552 5 CFNetwork 0x0000000182d9e4b0 0x182b4e000 + 2426032 6 Foundation 0x0000000183015efc 0x182efd000 + 1150716 7 libsystem_pthread.dylib 0x00000001821f1220 0x1821ef000 + 8736 8 libsystem_pthread.dylib 0x00000001821f1110 0x1821ef000 + 8464 9 libsystem_pthread.dylib 0x00000001821efb10 0x1821ef000 + 2832 Thread 4: 0 libsystem_kernel.dylib 0x00000001820510f4 0x18202f000 + 139508 1 libsystem_pthread.dylib 0x00000001821f3c90 0x1821ef000 + 19600 2 bfwsqy 0x0000000100ba2a30 0x1009f0000 + 1780272 3 bfwsqy 0x0000000100ba2f08 0x1009f0000 + 1781512 4 bfwsqy 0x0000000100ba18b4 0x1009f0000 + 1775796 5 libsystem_pthread.dylib 0x00000001821f1220 0x1821ef000 + 8736 6 libsystem_pthread.dylib 0x00000001821f1110 0x1821ef000 + 8464 7 libsystem_pthread.dylib 0x00000001821efb10 0x1821ef000 + 2832 Thread 5 name: com.apple.CFSocket.private Thread




