更新到Marshmallow后,应用程序在所有arm64设备上启动时崩溃.如何使用pc偏移量进行调试?

use*_*435 5 android arm64

我的应用程序在启动时崩溃了所有Android Marshmallow arm64设备.用户以前在同一设备上使用Lollipop上的应用程序,但随后在设备更新为Marshmallow后开始报告这些崩溃.32位设备不受影响.崩溃报告看起来像这样:

ABI: 'arm64'
pid: 3531, tid: 3531, name: ompany.myapp  >>> com.mycompany.myapp <<<
signal 4 (SIGILL), code 1 (ILL_ILLOPC), fault addr 0x7f796d9370
    x0   0000000013087000  x1   0000007f8815da00  x2   0000000000000002  x3   0000000000000004
    x4   b42e90dfe44ab496  x5   b42e90dfe44ab496  x6   0000000000000000  x7   00000000019b7af0
    x8   0000000013087000  x9   0000007f87713000  x10  0000000000000601  x11  000000001308700c
    x12  0000000000002000  x13  0000000000002000  x14  000000006fb18428  x15  00000000013cd010
    x16  0000000000000000  x17  0000000000002000  x18  0000005594f27e90  x19  0000000000000003
    x20  0000000013087000  x21  0000007f75e00098  x22  00000000130d6e20  x23  0000000000000601
    x24  0000000000000000  x25  0000000000000001  x26  0000000000000000  x27  0000000000000000
    x28  0000000000000000  x29  00000000130d6e20  x30  0000007f796d9350
    sp   0000007ff8a7bc60  pc   0000007f796d9370  pstate 0000000080000000

backtrace:
    #00 pc 0000000000929370  /data/app/com.mycompany.myapp-1/oat/arm64/base.odex (offset 0x486000)
    #01 pc 000000000092934c  /data/app/com.mycompany.myapp-1/oat/arm64/base.odex (offset 0x486000)
Run Code Online (Sandbox Code Playgroud)

偏移量0x486000在所有报告中都是一致的.

我可以使用此偏移来调试崩溃吗?有关该应用的更多信息:

  • 没有本机代码(全是Java)
  • 如果我解压缩apk,该目录看起来像这样(没有lib目录)

    [res],[assets],[META-INF],classes.dex,resources.arsc,AndroidManifest.xml

  • 我已经读过abi过滤技巧,有些人正在从他们的构建中使用exclude arm64库,强制系统加载32位库,但我没有本机代码,也没有libs目录.

我的猜测是我可以用这种偏移来做,但我不知道从哪里开始.

Vik*_*rma 1

我的应用程序在 arm64 设备 (Nexus 9) 中崩溃。我尝试了 这个答案,它对我有帮助。现在它可以在我迄今为止测试过的所有设备上运行。