【问题标题】:iOS app works fine in simulator but Apple rejected due to an EXC_CRASH (SIGABRT)iOS 应用程序在模拟器中运行良好,但 Apple 因 EXC_CRASH (SIGABRT) 而被拒绝
【发布时间】:2018-04-22 17:32:59
【问题描述】:

由于崩溃,Apple 退回了我的应用程序。但该应用程序在所有模拟器上运行良好。

我将 Xamarin 与 Microsoft Visual Studio 和 SDK 11 一起使用。该应用程序的唯一任务是显示公司的网站和信息。

这是我第一次使用 iOS。出于这个原因,我不明白苹果的答案。

苹果给我的文件是这样的:

{"app_name":"ColorNews.iOS","timestamp":"2017-11-06 12:57:29.52 -0800","app_version":"1.01","slice_uuid":"29054f34-e4d7-3459-8269 -27245b14d8ad","adam_id":1299723772,"build_version":"1.01","bundleID":"colornews.Aljamir.com","share_with_app_devs":false,"is_first_party":false,"bug_type":"109", "os_version":"iPhone OS 11.1 (15B93)","incident_id":"B423DB2C-223C-410A-8D76-476A74EC1A54","name":"ColorNews.iOS"} 事件标识符:B423DB2C-223C-410A-8D76-476A74EC1A54 CrashReporter 密钥:cac3035154ad4b589b77fd30cfea229fc2cfaf20 硬件型号:xxx 处理:ColorNews.iOS [3713] 路径:/private/var/containers/Bundle/Application/183739E5-CC74-4935-BFFA-F5FB944F2424/ColorNews.iOS.app/ColorNews.iOS 标识符:colornews.Aljamir.com 版本:1.01 (1.01) 代码类型:ARM-64(本机) 角色:前台 父进程:launchd [1] 联盟:colornews.Aljamir.com [1039] 日期/时间:2017-11-06 12:57:29.4363 -0800 发布时间:2017-11-06 12:57:29.3494 -0800 操作系统版本:iPhone OS 11.1 (15B93) 基带版本:6.17.00 报告版本:104 异常类型:EXC_CRASH (SIGABRT) 异常代码:0x0000000000000000, 0x0000000000000000 异常说明:EXC_CORPSE_NOTIFY 由线程触发:0 应用特定信息: 中止()调用 过滤后的系统日志: 没有找到 线程 0 名称:tid_303 调度队列:com.apple.main-thread 线程 0 崩溃: 0 libsystem_kernel.dylib 0x00000001842e9348 0x1842c8000 + 136008 1 libsystem_pthread.dylib 0x00000001843fd344 0x1843fa000 + 13124 2 libsystem_c.dylib 0x000000018425905c 0x1841f6000 + 405596 3 libsystem_c.dylib 0x0000000184258fc4 0x1841f6000 + 405444 4 ColorNews.iOS 0x0000000101bdd0d8 0x100f84000 + 12947672 5 ColorNews.iOS 0x0000000101bd813c 0x100f84000 + 12927292 6 ColorNews.iOS 0x0000000101aade90 0x100f84000 + 11706000 7 ColorNews.iOS 0x0000000101af8ed8 0x100f84000 + 12013272 8 ColorNews.iOS 0x0000000101af8a54 0x100f84000 + 12012116 9 ColorNews.iOS 0x0000000101bdd1d0 0x100f84000 + 12947920 10 ColorNews.iOS 0x0000000101be0f1c 0x100f84000 + 12963612 11 ColorNews.iOS 0x0000000100fa4414 0x100f84000 + 132116 12 libdyld.dylib 0x00000001841ba56c 0x1841b9000 + 5484 线程 1: 0 libsystem_pthread.dylib 0x00000001843fac1c 0x1843fa000 + 3100 线程 2: 0 libsystem_pthread.dylib 0x00000001843fac1c 0x1843fa000 + 3100 线程 3: 0 libsystem_kernel.dylib 0x00000001842e9150 0x1842c8000 + 135504 1 libsystem_pthread.dylib 0x00000001843fed3​​0 0x1843fa000 + 19760 2 libc++.1.dylib 0x00000001839a2f34 0x18399b000 + 32564 3 JavaScriptCore 0x000000018ba45dd0 0x18b100000 + 9723344 4 JavaScriptCore 0x000000018ba45ca4 0x18b100000 + 9723044 5 JavaScriptCore 0x000000018ba45b28 0x18b100000 + 9722664 6 JavaScriptCore 0x000000018ba45e20 0x18b100000 + 9723424 7 libsystem_pthread.dylib 0x00000001843fc31c 0x1843fa000 + 8988 8 libsystem_pthread.dylib 0x00000001843fc1e8 0x1843fa000 + 8680 9 libsystem_pthread.dylib 0x00000001843fac28 0x1843fa000 + 3112 线程 4 名称:WebThread 线程 4: 0 libsystem_kernel.dylib 0x00000001842c8bc4 0x1842c8000 + 3012 1 libsystem_kernel.dylib 0x00000001842c8a3c 0x1842c8000 + 2620 2 核心基础 0x0000000184779c74 0x184690000 + 957556 3 核心基础 0x0000000184777840 0x184690000 + 948288 4 核心基础 0x0000000184697fb8 0x184690000 + 32696 5 网络核心 0x000000018c50be04 0x18c4ca000 + 269828 6 libsystem_pthread.dylib 0x00000001843fc31c 0x1843fa000 + 8988 7 libsystem_pthread.dylib 0x00000001843fc1e8 0x1843fa000 + 8680 8 libsystem_pthread.dylib 0x00000001843fac28 0x1843fa000 + 3112 线程 5 名称:SGen worker 线程 5: 0 libsystem_kernel.dylib 0x00000001842e9150 0x1842c8000 + 135504 1 libsystem_pthread.dylib 0x00000001843fed3​​0 0x1843fa000 + 19760 2 ColorNews.iOS 0x0000000101bbdb6c 0x100f84000 + 12819308 3 libsystem_pthread.dylib 0x00000001843fc31c 0x1843fa000 + 8988 4 libsystem_pthread.dylib 0x00000001843fc1e8 0x1843fa000 + 8680 5 libsystem_pthread.dylib 0x00000001843fac28 0x1843fa000 + 3112 线程 0 因 ARM 线程状态(64 位)而崩溃: x0:0x0000000000000000 x1:0x0000000000000000 x2:0x0000000000000000 x3:0x0000000000000001 x4: 0x00000000000000000 x5: 0x0000000000989680 x6: 0x0000000000000037 x7: 0xffffffffffffffec x8: 0x0000000008000000 x9: 0x0000000004000000 x10: 0x00000000000003e8 x11: 0x00000001b731dd24 x12:0x00000001b731dd24 x13:0x0000000000000018 x14:0x0000000000000001 x15:0x0000000000000881 x16:0x0000000000000148 x17:0x0000000000000000 x18:0x0000000000000000 x19:0x0000000000000006 x20:0x00000001b4feeb80 x21:0x0000000101d4c000 x22:0x0000000000000303 x23:0x00000001b4feec60 x24: 0x00000001065373d9 x25: 0x0000000101c0055e x26: 0x0000000000000000 x27: 0x0000000101ca5158 x28:0x0000000101ca5138 fp:0x000000016ee7a980 lr:0x00000001843fd344 sp:0x000000016ee7a950 pc:0x00000001842e9348 cpsr:0x00000000 二进制图像: 0x100f84000 - 0x101c8ffff ColorNews.iOS arm64 /var/containers/Bundle/Application/183739E5-CC74-4935-BFFA-F5FB944F2424/ColorNews.iOS.app/ColorNews.iOS 0x103650000 - 0x10368ffff dyld arm64 /usr/lib/dyld 0x183999000 - 0x18399afff libSystem.B.dylib arm64 /usr/lib/libSystem.B.dylib 0x18399b000 - 0x1839f4fff libc++.1.dylib arm64 /usr/lib/libc++.1.dylib 0x1839f5000 - 0x183a15fff libc++abi.dylib arm64 ...

【问题讨论】:

  • 你的代码触发了错误(从crash可以看出),我不懂xamarin,能调试一下吗?你能符号化崩溃日志看看是哪一行导致它崩溃吗?
  • 另外,您不应该依赖模拟器进行测试。您需要在真实设备上进行测试。在提交您的应用程序之前,您还应该通过 TestFlight 在真实设备上测试您的发布版本。最后,如果您的应用所做的只是将网站包装在 Web 视图中,那么它可能会因为功能有限而被拒绝。

标签: ios xamarin


【解决方案1】:

您需要符号化该崩溃文件。当你这样做时,这部分

4   ColorNews.iOS                   0x0000000101bdd0d8 0x100f84000 + 12947672
5   ColorNews.iOS                   0x0000000101bd813c 0x100f84000 + 12927292
6   ColorNews.iOS                   0x0000000101aade90 0x100f84000 + 11706000
7   ColorNews.iOS                   0x0000000101af8ed8 0x100f84000 + 12013272
8   ColorNews.iOS                   0x0000000101af8a54 0x100f84000 + 12012116
9   ColorNews.iOS                   0x0000000101bdd1d0 0x100f84000 + 12947920
10  ColorNews.iOS                   0x0000000101be0f1c 0x100f84000 + 12963612

将是发生问题的文件/方法的名称和行号。

要进行符号化,您需要存档并发送给 Apple 的确切 IPA 和 dSYM 文件。我不知道 Xamarin 的 IDE 对它们做了什么,但希望它将它们存储在某个地方。

如果你拥有所有这些,最简单的方法可能是(在 Mac 上)

atos -arch arm64 -o YOURAPP.app.dSYM/Contents/Resources/DWARF/YOURBINARYNAME -l 0x0000000101bdd0d8 0x100f84000

(参数取自您的崩溃)- 这将告诉您崩溃的文件和方法。您需要用您的 dSYM 名称和二进制名称(我认为是 ColorNews. iOS 基于您的文件)

更多信息在这里:https://developer.apple.com/library/content/technotes/tn2151/_index.html#//apple_ref/doc/uid/DTS40008184-CH1-SYMBOLICATEWITHXCODE

如果您需要,您可以通过那里的说明获得准确的行号。

【讨论】:

  • 谢谢 Lou,我试试这个,但答案是:atos 无法为架构 arm64 的文件 ColorNews.app.dSYM/Contents/Resource/DWARF/ColorNews.iOS 加载符号。什么意思?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多