Android “如何分配”;。dat";.so库访问的文件

Android “如何分配”;。dat";.so库访问的文件,android,android-ndk,Android,Android Ndk,我需要在Google Play上发布一个应用程序。 但是,我的应用程序有一个可以访问10个“.dat”文件的库。 问题是如何分发这些dats文件。在assets目录中,我尝试解压缩,但是,库“.so”无法访问它们:权限问题 我考虑过将它们放在原始目录中的可能性,但我不知道它是否有效,因为我使用NDK创建链接,并且不知道它是否具有该项目的lib目录权限 在SD卡中存储不太好。用户可以删除这些文件 我该怎么办?将所有.dat文件放入资产文件夹(与src和jni处于同一级别)。Ant将把它们打包到.a

我需要在Google Play上发布一个应用程序。 但是,我的应用程序有一个可以访问10个“.dat”文件的库。 问题是如何分发这些dats文件。在assets目录中,我尝试解压缩,但是,库“.so”无法访问它们:权限问题

我考虑过将它们放在原始目录中的可能性,但我不知道它是否有效,因为我使用NDK创建链接,并且不知道它是否具有该项目的lib目录权限

在SD卡中存储不太好。用户可以删除这些文件


我该怎么办?

将所有.dat文件放入
资产
文件夹(与
src
jni
处于同一级别)。Ant将把它们打包到
.apk
存档中

如果你的目标是Android 2.3+,你可以通过NDK调用直接访问你的文件。如果您想在较低版本的Android上运行,您有两种可能:

  • 通过Java将文件提取到SD卡,然后从本机代码访问它们
  • 使用
    minizip
    (或类似的zip解包)访问
    .apk
    存档

  • 你可以。或者您可以在第一次运行时将它们复制到数据文件夹中。Seva,谢谢您的回复。发生了两个问题:要复制所有文件,它们的大小都是一样的(不知道为什么。你知道吗?)。另外,APK已经有20MB的数据,有什么可能是坏的复制到另一个目录,你不觉得吗?这个故事的好处是,如果我复制了用户,就会删除他们。。。你能帮我吗?如果数据文件可以压缩,APK不会是20MB。但是,为了扩展它们,您可能需要考虑SD卡(如果它存在的话)。至于用户删除,无论如何复制都必须是有条件的——如果文件不在目录中(即,这是第一次运行),则将其复制到目录中,因此如果用户删除,则可以将其复制到另一个目录中。顺便问一下,这是你的图书馆吗?因为最好的方法是——将它们作为资产从APK中读取。