在Android Native Environment中从我自己的APK中读取资源文件

我正在移植到Android。 我现有的项目有大量的资源文件,我正在移植到我的Android项目中。 我把它们都放在/ res / raw /中,我想在我的本地库中使用fopen()等函数访问这些资源。 可以这样做,还是我必须通过JNI呢? 我真的不愿意,为了便于移植和可能的速度和记忆原因。

如果您阻止资产在添加到APK中时被压缩 ,那么您可以使用openRawResourceFd()来获取文件描述符,偏移量和大小 ,并将它们传递给您只需执行fopen和fseek的本机代码。 另一方面,如果你让构建系统压缩你想要访问的文件,你需要使用类似libzip的东西来从APK中读取它们。

查看ndk中的obb.h。

来自Android NDK中的docs / STABLE-APIS.html:

 Direct (read-only) access to assets embedded in your .apk. or the Opaque Binary Blob (OBB) files, a new feature of Android XX that allows one to distribute large amount of application data outside of the .apk (useful for game assets, for example).