我正在开发一个 Android 项目,该项目在
C++
中有本机库。在代码中的某个地方,我遇到了尝试创建新文件的这一行:
namespace fs = boost::filesystem;
dest_path = fs::absolute(make_public(fs::temp_directory_path())) / fs::path("tmp-" + to_string(u) + "." + extension);
fs::remove(dest_path);
fs::copy_file(*doc.get_path(), dest_path);
现在 boost API
temp_directory_path
返回 /data/local/tmp
在 Android 中的路径。但似乎 Android 应用程序不允许在此位置创建文件。有没有办法通过 adb shell
授予权限来在此位置创建文件/文件夹?或者是否有 /data/local/tmp
目录的替代方案,因为我只需要一个临时位置并且不打算长时间存储这些文件,或者如何在 ndk
中或通过 boost
获取应用程序的数据目录?
我的建议是在库或类初始化期间从 Java/Kotlin 代码获取目录,将
fs::temp_directory_path()
替换为从 Java/Kotlin 代码获取的值。
Context.getCacheDir()
。这将为您提供一个 File
并且您应该通过调用 file.getAbsolutePath()
来获取绝对路径(因为本机代码不使用 URI,而是使用常规文件系统路径)。