Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在NDK中使用资源文件_Android_Android Ndk - Fatal编程技术网

Android 在NDK中使用资源文件

Android 在NDK中使用资源文件,android,android-ndk,Android,Android Ndk,我正在创建一个NDK库,它需要包含和访问二进制数据文件(.dat扩展名)。我无法让编译的库查看此文件。为了让事情变得更难一些,我在一个库包中这样做 我想如果在我的Android.mk文件中,我将这个.dat文件复制到我的应用程序的资源文件夹中,然后从应用程序中访问该文件夹,这将是可行的,但我觉得一定有更好的方法 有什么建议吗?将其放在资产文件夹中,而不是资源中;NDK提供了从本机代码访问资产的功能 通常,在安装后第一次运行应用程序时,我们会将一些“文件”从资源或资产解压到文件系统(例如/sdca

我正在创建一个NDK库,它需要包含和访问二进制数据文件(.dat扩展名)。我无法让编译的库查看此文件。为了让事情变得更难一些,我在一个库包中这样做

我想如果在我的Android.mk文件中,我将这个.dat文件复制到我的应用程序的资源文件夹中,然后从应用程序中访问该文件夹,这将是可行的,但我觉得一定有更好的方法


有什么建议吗?

将其放在资产文件夹中,而不是资源中;NDK提供了从本机代码访问资产的功能

通常,在安装后第一次运行应用程序时,我们会将一些“文件”从资源或资产解压到文件系统(例如
/sdcard
)。当文件必须由外部应用程序和LIB使用(例如播放声音)或这些文件将要更改时,此方法最为有效


最后,您可以在
ndk构建期间将数据链接到.so。这将解决如何将.dat文件复制到应用程序文件夹中的问题,但读取它可能很棘手,并且不可能进行修改。你不需要创建一个巨大的库。您可以创建包含数据的模型库。如果我理解正确,您可以忽略文件结构、标题等。您只需要在
libs/armeabi
(或其他)文件夹中创建一个名为lib的文件。我最后做的是在Android.mk中添加一行代码,将文件复制到应用程序的资产文件夹中。当应用程序启动时,我将该文件复制到SD卡,最后将该路径传递到我的CPP函数。我这样做是为了不被压缩,我希望能够使用我的CPP库中的文件访问方法来访问它,而不是修改它来访问NDK特定的文件。谢谢,@MithunSarkerShuvro。我改变了主意。幸运的是,现在可以在official developer.android.com/ndk上找到这些信息。