native thread exiting without having called DetachCurrentThread:
javaVM->AttachCurrentThread之后要在某个时机调用javaVM->DetachCurrentThread();
同一时刻未detach线程数目是有限的,低端机型容易超出上限,出现npe崩溃。
“xx.so” has bad ELF magic: 00000000
java.lang.UnsatisfiedLinkError: dlopen failed: “xx.so” has bad ELF magic: 00000000
1、有可能是选择的abiFilters和手机不一样
ndk {
abiFilters ‘armeabi-v7a’, ‘arm64-v8a’
}
需要做下检查
2、system.loadlibrary出现失败
我遇到的是偶现的报错,是因为system.loadlibrary出现失败,解压出来的so不完整。建议试试下面的这个工具。
https://github.com/KeepSafe/ReLinker
其他
注意stl库很多组件不能保证线程安全需要加锁,论坛上有小伙伴的map没加锁,多线程写入节点之后,遍历红黑树时会死循环。
本文探讨了Android中JavaVM->AttachCurrentThread后需要调用DetachCurrentThread的必要性,避免线程数超出限制导致的NPE崩溃。同时提到了'xx.so'加载错误可能是由于ABI不匹配或so文件不完整,建议检查abiFilters设置,并使用ReLinker工具处理偶发加载失败问题。还警告了STL容器在多线程环境中的线程安全性问题,提醒开发者注意加锁。
325

被折叠的 条评论
为什么被折叠?



