Android ndk Android NDK在读取/写入文件时崩溃
我已经将一个非常大的应用程序移植到Android上。它通过TCP/IP接收二进制数据,并将其写入应用程序中不时使用的文件中。它保存文件的目录默认设置为./file\u cache。这里出了问题:Android ndk Android NDK在读取/写入文件时崩溃,android-ndk,native-activity,Android Ndk,Native Activity,我已经将一个非常大的应用程序移植到Android上。它通过TCP/IP接收二进制数据,并将其写入应用程序中不时使用的文件中。它保存文件的目录默认设置为./file\u cache。这里出了问题: fileHandle = fopen(filename,"wb"); 在本例中,文件名为“file_i”,其中i从0开始,并为每个文件递增 程序在写入时崩溃,并且它不必在第一个文件上崩溃,有时甚至会在第十个文件上崩溃。当它崩溃时,fileHandle最终为NULL 文件名最初在wchar中,但在之前已
fileHandle = fopen(filename,"wb");
在本例中,文件名为“file_i”,其中i从0开始,并为每个文件递增
程序在写入时崩溃,并且它不必在第一个文件上崩溃,有时甚至会在第十个文件上崩溃。当它崩溃时,fileHandle最终为NULL
文件名最初在wchar中,但在之前已转换(我在记录器中打印出来以确认其正确性)
我尝试过的:
- 我已经添加了所有与此相关的权限 文件读/写外部存储器
- 我尝试了不同的位置/SD卡/文件和 /数据/数据//文件
非常感谢您的建议。我发现了这个问题,尽管这是一个常规的程序错误。文件名“file_i”是由于一些复杂的代码被指定为大小1,这自然太小,导致分割错误。所以这与福彭无关。实际上,我遇到的所有分段错误都是由类似于此的错误引起的,所以无论何时处理char/wchar,都值得仔细检查代码
此外,我使用/data/data/。。工作正常的文件夹,实际上还没有试过sdcard one,但看不出它为什么不工作。我不会依赖Android应用程序中的当前目录-当前目录的整个概念对非控制台软件来说都很有用。只需使用完整路径即可。使用
Context.getDir()
获取应用程序的数据文件夹路径。正如我所说,我还尝试了其他目录。有没有办法在NDK中获取该数据文件夹?我根本不使用Java,我非常希望不要使用它。它可以在android\u app
中找到,您的android\u main
可以作为参数使用。具体来说,它是state->activity->internalDataPath
。如果您使用的是NativeActivity,请将问题标记为native activity
-环境明显不同。崩溃是什么?崩溃的唯一表现形式是fopen()
返回NULL吗?在这种情况下,您是否再次尝试调用fopen()
?如果在fopen()
之前,logcat中有一些相关的行,请发布它们。您找到解决方案了吗?我也遇到同样的问题