Android 在NDK中使用资源文件
我正在创建一个NDK库,它需要包含和访问二进制数据文件(.dat扩展名)。我无法让编译的库查看此文件。为了让事情变得更难一些,我在一个库包中这样做 我想如果在我的Android.mk文件中,我将这个.dat文件复制到我的应用程序的资源文件夹中,然后从应用程序中访问该文件夹,这将是可行的,但我觉得一定有更好的方法Android 在NDK中使用资源文件,android,android-ndk,Android,Android Ndk,我正在创建一个NDK库,它需要包含和访问二进制数据文件(.dat扩展名)。我无法让编译的库查看此文件。为了让事情变得更难一些,我在一个库包中这样做 我想如果在我的Android.mk文件中,我将这个.dat文件复制到我的应用程序的资源文件夹中,然后从应用程序中访问该文件夹,这将是可行的,但我觉得一定有更好的方法 有什么建议吗?将其放在资产文件夹中,而不是资源中;NDK提供了从本机代码访问资产的功能 通常,在安装后第一次运行应用程序时,我们会将一些“文件”从资源或资产解压到文件系统(例如/sdca
有什么建议吗?将其放在资产文件夹中,而不是资源中;NDK提供了从本机代码访问资产的功能 通常,在安装后第一次运行应用程序时,我们会将一些“文件”从资源或资产解压到文件系统(例如
/sdcard
)。当文件必须由外部应用程序和LIB使用(例如播放声音)或这些文件将要更改时,此方法最为有效
最后,您可以在
ndk构建期间将数据链接到.so。这将解决如何将.dat文件复制到应用程序文件夹中的问题,但读取它可能很棘手,并且不可能进行修改。你不需要创建一个巨大的库。您可以创建包含数据的模型库。如果我理解正确,您可以忽略文件结构、标题等。您只需要在libs/armeabi
(或其他)文件夹中创建一个名为lib的文件。我最后做的是在Android.mk中添加一行代码,将文件复制到应用程序的资产文件夹中。当应用程序启动时,我将该文件复制到SD卡,最后将该路径传递到我的CPP函数。我这样做是为了不被压缩,我希望能够使用我的CPP库中的文件访问方法来访问它,而不是修改它来访问NDK特定的文件。谢谢,@MithunSarkerShuvro。我改变了主意。幸运的是,现在可以在official developer.android.com/ndk上找到这些信息。