gpt4 book ai didi

file-io - android ndk 数据保存/加载

转载 作者:行者123 更新时间:2023-12-01 09:03:29 24 4
gpt4 key购买 nike

我正在将 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++ 重写这个代码片段?

最佳答案

您仍然可以在 NDK 项目中使用 stdio.h。 #include 并删除。

唯一的技巧是获取应用程序私有(private)数据文件夹的路径。它可以作为 state->activity->internalDataPathandroid_main .在该路径之外,应用程序没有文件系统权限。

您可能需要您的 JNIEnv最终以一种或另一种方式。整个 Java API 没有为本地子系统镜像;所以坚持下去env .但是 native 文件 I/O 就在那里。

关于file-io - android ndk 数据保存/加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12532259/

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