我的Android应用程序一直在重新启动,没有明显的原因。我没有任何崩溃或堆栈跟踪进行调试,应用程序启动,加载一个调用我的本机库的包装器,以及一个(非常简短的)时刻之后,它重新启动。
该应用程序有一个新的PID(通过Android Studio / logcat观看),当观看Android模拟器时,似乎应用程序被冻结,白屏并没有显示任何内容。一段时间后(有时3次重新启动,有时15次),应用程序崩溃时出现以下“跟踪”:
com.stack.overflow.librarytestapp A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0x10 in tid 25652 (librarytestapp)
[ 02-26 11:50:07.622 1264: 1264 W/ ]
debuggerd: handling request: pid=25652 uid=10087 gid=10087 tid=25652
应用程序依赖于.aar
文件(Android库),该文件包含C库的JNI代码。这些库使用Android NDK工具链进行交叉编译,并使用交叉编译的OpenSSL库。
我知道C库正常工作的事实。编译期间没有任何警告或错误,我为x86
和arm
生成了所有内容。查看生成的.apk
时,这些文件嵌入在libs
文件夹中,如下所示:
libs/
|- x86/
|- libagent.so ; C library
|- libclient.so ; C library
|- libcrypto.so ; OPENSSL
|- libssl.so ; OPENSSL
|- arm/
|- libagent.so ; C library
|- libclient.so ; C library
|- libcrypto.so ; OPENSSL
|- libssl.so ; OPENSSL
有人可以帮我解决这个问题吗?这让我疯狂。提前谢谢。
编辑经过一番挖掘后,当我从使用OpenSSL的libclient.so
调用初始化方法时,似乎会发生这种情况。 libagent.so
的初始化不使用OpenSSL。可能有关系吗?