我的应用程序在启动时为所有Android棉花糖arm64设备崩溃。用户以前在同一台设备上使用棒棒糖上的应用程序,但在设备更新为棉花糖后开始报告这些崩溃。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)
偏移量0x486000在所有报告中都是一致的。
我可以使用这个偏移量来调试崩溃吗?有关该应用程序的更多信息:
- 没有本机代码(都是Java)
如果我解压缩
apk
,目录如下(没有lib
目录)[res]
、[assets]
、[META-INF]
、classes.dex
、resources.arsc
、AndroidManifest.xml
我读过一些abi过滤技巧,有些人在构建中使用exclude arm64库,迫使系统加载32位库,但我没有本地代码,也没有库目录。
我的猜测是,我可以用这个偏移量做点什么,但我不确定从哪里开始。
我的应用程序在arm64设备(Nexus 9)中崩溃。我尝试了这个答案,它帮助了我。现在它在我迄今为止测试过的所有设备上运行。