[英]Nativescript app works on simulator but not on real device. Crash report says EXC_BAD_ACCESS (SIGSEGV)
我有一个Nativescript-Angular
移动应用程序。 它在模拟器上运行良好。 但是一旦它发布到 Apple 商店,它就可以在旧的 model 上运行,比如iphone 7 ,但不能在iphone 10/11/12上运行。 ios 版本都是14+ ,所以我认为这不是原因。
我从手机中提取了崩溃报告,它只有一些像这样的错误消息。 谁能给我一些想法或指出我如何研究这个的正确方向?
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Subtype: KERN_INVALID_ADDRESS at 0x000000000280b350
VM Region Info: 0x280b350 is not in any region. Bytes before following region: 4324461744
REGION TYPE START - END [ VSIZE] PRT/MAX SHRMOD REGION DETAIL
UNUSED SPACE AT START
--->
__TEXT 10442c000-104430000 [ 16K] r-x/r-x SM=COW ...e.app/LBELite
Termination Signal: Segmentation fault: 11
Termination Reason: Namespace SIGNAL, Code 0xb
Terminating Process: exc handler [508]
Triggered by Thread: 0
Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0 libobjc.A.dylib 0x000000019ffbc658 0x19ffb7000 + 22104
1 libobjc.A.dylib 0x000000019ffbcf88 0x19ffb7000 + 24456
2 NativeScript 0x0000000104da4930 0x104d30000 + 477488
...
Thread 1 name: JavaScriptCore bmalloc scavenger
Thread 1:
0 libsystem_kernel.dylib 0x00000001b8ef41ac 0x1b8ecc000 + 164268
...
Thread 2:
0 libsystem_pthread.dylib 0x00000001d6a58764 0x1d6a4e000 + 42852
...
Thread 3 name: Heap Helper Thread
Thread 3:
0 libsystem_kernel.dylib 0x00000001b8ef41ac 0x1b8ecc000 + 164268
...
Thread 4 name: Heap Helper Thread
Thread 4:
0 libsystem_kernel.dylib 0x00000001b8ef41ac 0x1b8ecc000 + 164268
...
Thread 5 name: Heap Helper Thread
Thread 5:
0 libsystem_kernel.dylib 0x00000001b8ef41ac 0x1b8ecc000 + 164268
...
Thread 6 name: Heap Helper Thread
Thread 6:
0 libsystem_kernel.dylib 0x00000001b8ef41ac 0x1b8ecc000 + 164268
...
Thread 7 name: Heap Helper Thread
Thread 7:
0 libsystem_kernel.dylib 0x00000001b8ef41ac 0x1b8ecc000 + 164268
...
Thread 0 crashed with ARM Thread State (64-bit):
x0: 0x000000000280b348 x1: 0x0000000280b34b60 x2: 0x0000000000000000 x3: 0x0000000000000034
...
esr: 0x92000006 (Data Abort) byte read Translation fault
您正在使用的运行时库NativeScript
为 objective-C 运行时提供了一个价值太低的数据指针。 当访问此 memory 位置 0x000000000280b350 时,Kernel 注意到没有虚拟 Z4789F23283B3A61F8538B641A1BEF1 你的esr
寄存器有最高位二进制 100100。ARM 手册说
用于由数据访问产生的 MMU 故障、alignment 故障(堆栈指针未对齐引起的故障除外)以及同步外部中止,包括同步奇偶校验或 ECC 错误。 不用于与调试相关的异常。
低值数据地址的一个常见原因是有代码将某个值与其他基值偏移,而获得基值的东西返回 nil,或者给你 0。你的错误值对于这种情况来说有点大一个问题(通常你会看到像 0x230 之类的错误值)。
我认为您的代码破坏的原因是底层库必须具有特定于体系结构的代码方面。 该代码可能支持 Intel(假设您使用的是基于 Intel 的 Mac)和较旧的 ARM 芯片,但不支持较新的芯片。 iPhone X 使用的是 A11 仿生芯片。
您是否有任何其他应用程序使用此技术堆栈但可在最新硬件上运行? 你有 iPhone X,在本地能用吗? 您的 NativeScript 支持是否有任何更新版本可以尝试?
出错的可能性很小是由于 App Store 在将您的 BitCode 发送给客户之前重新编译了您的 BitCode,这导致了故障。 您的构建存档中是否启用了 BitCode?
您使用的是哪个版本的 IOS 运行时? 在我从 6.5.0 更新到 6.5.4 之前,我遇到了类似的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.