在Android本地环境中从我自己的APK中读取资源文件

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

Solutions Collecting From Web of "在Android本地环境中从我自己的APK中读取资源文件"

如果你阻止你的资产被压缩 ,你可以使用openRawResourceFd()获得一个文件描述符,偏移量和大小 ,并将它们传递给你的本地代码,你只需要做一个fopen和fseek。 另一方面,如果让构build系统压缩要访问的文件,则需要使用类似libzip的内容从APK中读取它们。

检查ndk中的obb.h。

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

<android/obb.h> 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).