我出于性能原因使用Android NDK主要在C中创建应用程序,但似乎fopen等文件操作在Android中无法正常运行.每当我尝试使用这些功能时,应用程序崩溃.
如何使用Android NDK创建/写入文件?
除了在SD卡上,还有其他方法可以在其他地方写入文件吗?
我在文件系统上尝试了很多不同的路径但是fopen总是返回NULL,除了我在/ sdcard /中写入/读取的任何文件...
还有别的东西相当于:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
Run Code Online (Sandbox Code Playgroud)
那允许你在文件系统上写一些东西?
为了说明我测试的地方,HTC Desire S,Android 2.3.5和ndk-r8.
我在ndk-r7b和ndk-r8中使用android_app-> activity-> internalDataPath或externalDataPath访问本地读写目录时遇到问题,因为它们都是NULL.我看到这已经发布在以前的版本中,根据这篇文章,更新将解决这个问题: -
现在也许这可以在冰淇淋三明治中修复,但这远非理想,因为我的工具链完全支持向后兼容性,以捕捉那些不更新的人.所以我的问题是有一个已知的修复还是我必须手动添加目录结构,如"/data/data/com.example.mytest/files/somefile.dat",直到它修复?
我正在将纯C++游戏移植到Android上,由于我的目标是Android 3.0+平板电脑,我选择使用NativeActivity来完全避免使用Java.但是,我无法看到任何允许我写入设备内部存储的功能.对fopen()的调用将失败,因为我不知道我应该写哪个目录并且内部存储文件系统不可访问
这段代码通常可以解决Java问题,为我提供了应用程序内部可写数据目录的路径:
mContext.getFilesDir();
Run Code Online (Sandbox Code Playgroud)
有人知道C++的替代品吗?否则我将不得不用JNI调用上面的代码片段.
当然,我已经查看了$ NDK /..../ include/android / headers但是我看不到我需要的候选方法.
filesystems android android-ndk android-3.0-honeycomb native-activity