使用 JNI 我无法访问这样的文件:
ifstream file("file.txt");
file.txt
位于文件夹jni
中,该文件夹与本机代码文件位于同一文件夹中
我只能访问绝对路径("/sdcard/file.txt"
),但这个技巧不是我要找的。试过"data/data/com.example.SomeExample/jni/file.txt"
但没有运气。
在使用本机代码时,我应该如何将文件称为相对路径?
使用 JNI 我无法访问这样的文件:
ifstream file("file.txt");
file.txt
位于文件夹jni
中,该文件夹与本机代码文件位于同一文件夹中
我只能访问绝对路径("/sdcard/file.txt"
),但这个技巧不是我要找的。试过"data/data/com.example.SomeExample/jni/file.txt"
但没有运气。
在使用本机代码时,我应该如何将文件称为相对路径?
该jni
文件夹未添加到您的 APK。如果您希望文件与您的应用程序捆绑在一起,我建议将它们放在assets
文件夹中。如果该assets
文件夹尚不存在,请将其放置在与该jni
文件夹相同的级别(因此它们是同级的)。
如果您采用这种方法,您将不得不使用 Asset Manager。这有一个本地接口,在 android/asset_manager.h 中找到。要打开您的文件,请使用:
AAsset *a = AAssetManager_open(pAssetManager, "file.txt", AASSET_MODE_BUFFER);
if (a)
{
const void *res = AAsset_getBuffer(a);
//do something with the file!
AAsset_close(a);
}
您可以传入不同的标志而不是AASSET_MODE_BUFFER
.