gpt4 book ai didi

android - 为什么android ndk函数AAsetManager_open报错,当路径是这样的

转载 作者:行者123 更新时间:2023-11-30 02:38:57 25 4
gpt4 key购买 nike

string relativePath = "scripts/test.pb"; // this is ok
string relativePath = "./scripts/test.pb"; // this can not open the file"
AAsset* asset = AAssetManager_open(FileUtilsAndroid::assetmanager,
relativePath.c_str(),
AASSET_MODE_UNKNOWN);

当我使用此函数打开 android apk 文件时,“relativePath”包含“.”不能工作。我不明白为什么?而且我看不到“AAssetManager_open”的源代码,所以只需要帮助。

最佳答案

如果您查看 AAssetManager_open 的源代码, 你会看到它调用了 AssetManager::open ,这样做:

String8 assetName(kAssetsRoot);
assetName.appendPath(fileName);

哪里kAssetsRoot是一个 static const char* 定义为保存值“assets”

如果您使用“./scripts/test.pb”作为文件名,这将产生“assets/./scripts/test.pb”(这是一个有效的 unix 路径名,即您可以添加尽可能多的“./”或“/”,它应该仍然是一个有效路径),但在 AssetManager::openNonAssetInPathLocked 内它将“assets/./scripts/test.pb”附加到 ap.path,这可能会在调用堆栈的下方引起问题,即在 Asset::createFromFile 中这叫open_FileAsset::openChunk在给定的文件路径上。

关于android - 为什么android ndk函数AAsetManager_open报错,当路径是这样的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26063690/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com