问题描述
我的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 (将#修改为@)