如何解决Android NDK-AAssetManager崩溃
我的AAssetManager有JNI代码。有时,我可以在Google Play控制台中看到以下错误:
3 John
2 William
#00 pc 00000000000223bc /system/lib64/libc.so (abort+116)
#01 pc 00000000000934e8 /system/lib64/libc.so (__fortify_fatal(char const*,...)+120)
#02 pc 0000000000092b50 /system/lib64/libc.so (HandleUsingDestroyedMutex(pthread_mutex_t*,char const*)+52)
#03 pc 00000000000929cc /system/lib64/libc.so (pthread_mutex_lock+228)
#04 pc 00000000000acfe8 /system/lib64/libc++.so (std::__1::mutex::lock()+8)
#05 pc 0000000000010a7c /system/lib64/libandroid.so (AAssetManager_open+64)
#06 pc 00000000002870fc /data/app/com.company.game-pQJ8F8k_RlY7Xj6moTsxGg==/lib/arm64/libgame.so (AndroidUtils::AssetFopen(char const*,char const*)+36)
的代码是这样的:
AndroidUtils:AssetFopen
静态变量AAssetManager* AndroidUtils::android_asset_manager = nullptr;
FILE* AndroidUtils::AssetFopen(const char* fname,const char* mode)
{
#if defined(DEBUG) || defined(_DEBUG)
if(mode[0] == 'w') return nullptr;
#endif
if (android_asset_manager == nullptr)
{
return nullptr;
}
AAsset* asset = AAssetManager_open(android_asset_manager,fname,AASSET_MODE_BUFFER);
if(!asset)
{
return nullptr;
}
return funopen(asset,AndroidUtils::AssetRead,AndroidUtils::AssetWrite,AndroidUtils::AssetSeek,AndroidUtils::AssetClose);
}
是通过android_asset_manager
的JNI直接设置的。
任何想法会导致这种情况吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。