#if DL_PLATFORM == DL_PLATFORM_ANDROID if(str[0] != '/') {// 不是绝对路径,则读assets AAsset* asset = AAssetManager_open( g_android->_app->activity->assetManager, str.data(), AASSET_MODE_BUFFER); if (!asset) { log_err("AAssetManager_open失败:{}", str); return {}; } Buffer buf; auto size = AAsset_getLength(asset); buf.resize(size); int size_read = AAsset_read(asset, buf.data(), size); AAsset_close(asset); if (size_read < size) { log_err("AAsset_read失败:{}", str); return {}; } // 保存到外部存储 std::string str_temp = PathStorage() + str; File::CreateFolder(File::GetFilePath(str_temp)); std::ofstream ofs; ofs.open(str_temp); ofs.write((char*)buf.data(), buf.size()); ofs.close(); log_info("安卓从assets创建文件:{} -> {}", path_name, str_temp); std::ifstream ret; ret.open(str_temp, is_binary ? (std::ifstream::binary | std::ifstream::in) : std::ifstream::in); return ret; } #endif