我正在将 PC OpenGL 应用程序移植到 Android 上。我选择使用 NDK android_native_app_glue 框架的东西。据我了解,它可以让我继续使用 C++,甚至不用编写任何 JAVA 代码行。这听起来很有希望。
对我来说,第一个不清楚的是数据保存/加载。我的应用程序的数据格式是二进制的,我的原始 PC 相关代码使用普通的“stdio.h”文件操作:fopen、fread、fwrite 等来创建、写入和读取“mygame.bin”文件。如何将其移植到 Android 上?
谷歌搜索后,我发现我必须存储然后使用“java环境”变量:
JNIEnv *g_jniEnv = 0;
void android_main(struct android_app* state) {
g_jniEnv = state->activity->env;
}
但是,我仍然没有意识到如何使用这个 g_jniEnv 来执行文件操作。
更新: 好的,我发现在Java中,可以如下进行数据保存:
String string = "hello world!";
FileOutputStream fos = openFileOutput("mygame.bin", Context.MODE_PRIVATE);
fos.write(string.getBytes());
fos.close();
所以我的问题是:给定一个指向 JNIEnv 的指针,我如何用 C++ 重写这个代码片段?