Android 如何在两个项目中使用相同的.so文件时恢复应用程序崩溃?

Android 如何在两个项目中使用相同的.so文件时恢复应用程序崩溃?,android,android-ndk,Android,Android Ndk,我在我的一个projectFirst项目中使用了example.so文件,我在设备中成功编译并运行了该项目,但我在另一个projectSecond项目中使用了相同的.so文件,如果我在设备中运行该项目,它将被强制关闭 我发现了问题,如果我卸载第一个项目,第二个项目运行时没有强制关闭 =>是否无法在同一设备中运行这两个项目 我的日志猫的反应是 pid: 16631, tid: 16631, name: com.oneconnect >>> com.oneconnect

我在我的一个projectFirst项目中使用了example.so文件,我在设备中成功编译并运行了该项目,但我在另一个projectSecond项目中使用了相同的.so文件,如果我在设备中运行该项目,它将被强制关闭

我发现了问题,如果我卸载第一个项目,第二个项目运行时没有强制关闭

=>是否无法在同一设备中运行这两个项目

我的日志猫的反应是

    pid: 16631, tid: 16631, name: com.oneconnect  >>> com.oneconnect <<<
    signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr deadbaad
    r0 00000027  r1 deadbaad  r2 00000180  r3 00000000
    r4 00000000  r5 be8e5e7c  r6 5edcde60  r7 5edcec14
    r8 00000194  r9 410fdc84  sl 41dee1b8  fp be8e5f04
    ip fffda808  sp be8e5e78  lr 4014554d  pc 40141be2  cpsr 60000030
    d0  64656c6961662022  d1  6a702f326175736f
    d2  546f7475615f676e  d3  4f74696d736e6120
    d4  6441203a726f7272  d5  6c61207373657264
    d6  6e69207964616572  d7  0155748065737520
    d8  0000000000000000  d9  0000000000000000
    d10 0000000000000000  d11 0000000000000000
    d12 0000000000000000  d13 0000000000000000
    d14 0000000000000000  d15 0000000000000000
    d16 4175574808000000  d17 3fe0000000000000
    d18 00000012410fdc48  d19 5ec4af845ef2c18e
    d20 6574726f70707553  d21 4000680000720064
    d22 0000000000000000  d23 be8e62ac00000000
    d24 00f500f500f500f5  d25 00a100a100a100a1
    d26 00a100a100a100a1  d27 00a100a100a100a1
    d28 0100010001000100  d29 0100010001000100
    d30 0000000100000001  d31 0000000100000001
    scr 80000010
    backtrace:
    #00  pc 0001abe2  /system/lib/libc.so
    #01  pc 00018208  /system/lib/libc.so (abort+4)
    #02  pc 00021ab9  /system/lib/libc.so (__assert2+60)
    #03  pc 00149af0  /data/app-lib/com.oneconnect-1/libmtapjsua2.so (pjsua_acc_add+284)
    #04  pc 00110d54  /data/app-lib/com.oneconnect-1/libmtapjsua2.so (pj::Account::create(pj::AccountConfig const&, bool)+100)
    stack:
    be8e5e38  00000000
    be8e5e3c  4164053a  /dev/ashmem/dalvik-card-table (deleted)
    be8e5e40  4016f160  /system/lib/libc.so
    be8e5e44  5afafc70
    be8e5e48  4016f160  /system/lib/libc.so
    be8e5e4c  00000001
    be8e5e50  4016f254  /system/lib/libc.so
    be8e5e54  4016f1b4  /system/lib/libc.so
    be8e5e58  00000000
    be8e5e5c  4014554d  /system/lib/libc.so (_fwalk+32)
    be8e5e60  00000001
    be8e5e64  be8e5e7c  [stack]
    be8e5e68  5edcde60  /data/app-lib/com.oneconnect-1/libmtapjsua2.so
    be8e5e6c  5edcec14  /data/app-lib/com.oneconnect-1/libmtapjsua2.so (__PRETTY_FUNCTION__.19088)
    be8e5e70  df0027ad
    be8e5e74  00000000
    #00  be8e5e78  00000194
    be8e5e7c  fffffbdf
    be8e5e80  5edcddf4  /data/app-lib/com.oneconnect-1/libmtapjsua2.so
    be8e5e84  5edcde60  /data/app-lib/com.oneconnect-1/libmtapjsua2.so
    be8e5e88  5edcec14  /data/app-lib/com.oneconnect-1/libmtapjsua2.so (__PRETTY_FUNCTION__.19088)
    be8e5e8c  40144ab9  /system/lib/libc.so (fprintf+16)
    be8e5e90  4016f1b4  /system/lib/libc.so
    be8e5e94  40167ed1  /system/lib/libc.so
    be8e5e98  5edcddf4  /data/app-lib/com.oneconnect-1/libmtapjsua2.so
    be8e5e9c  4013f20c  /system/lib/libc.so (__pthread_clone)
    #01  be8e5ea0  be8e5ea0  [stack]
    be8e5ea4  40148abd  /system/lib/libc.so (__assert2+64)
    #02  be8e5ea8  5edcec14  /data/app-lib/com.oneconnect-1/libmtapjsua2.so (__PRETTY_FUNCTION__.19088)
    be8e5eac  5edcde60  /data/app-lib/com.oneconnect-1/libmtapjsua2.so
    be8e5eb0  5edcde60  /data/app-lib/com.oneconnect-1/libmtapjsua2.so
    be8e5eb4  5edcde60  /data/app-lib/com.oneconnect-1/libmtapjsua2.so
    be8e5eb8  5ee11d64  /data/app-lib/com.oneconnect-1/libmtapjsua2.so
    be8e5ebc  5ee11d64  /data/app-lib/com.oneconnect-1/libmtapjsua2.so
    be8e5ec0  00000000
    be8e5ec4  410fdc9c

感谢您的回复

这应该是可能的。1强制关闭不提供信息,您应提供adb logcat输出的相关部分。2.如何安装。那么?市场应用程序和设备制造商使用不同的方法,加上黑客在根设备上使用安装脚本。3您的图书馆是否获得了全系统的资源?特别是,有限的资源可能只是内存。我在libs armbi、armbi-v7等中使用不同的文件夹strct和不同的文件。因此,回溯显示pj::Account::create调用了pjsua_acc_add,该函数执行了一个u断言。断言失败了,libc执行了abort,它跳转到操作系统开发人员想要的地址0xdeadbaad pun:dead&bad。我可以猜,这个断言是关于获取一些共享资源的。你需要在pjsua_acc_add的源代码中找到问题。请参阅@user1846931的链接:我的问题已经解决了,谢谢回复。