我正在移植到Android。我现有的项目有大量的资源文件,我正在移植到我的Android项目中。我把它们都放在/ res / raw /中,我想在我的本地库中使用fopen()等函数访问这些资源。可以这样做,还是我必须通过JNI呢?我真的不愿意,为了便于移植和可能的速度和记忆原因。
答案 0 :(得分:14)
如果你将prevent your assets from being compressed添加到APK中,那么你可以use openRawResourceFd() to get a file descriptor, offset, and size将它们传递给你的本地代码,在那里你只需要做一个fopen和fseek。另一方面,如果您让构建系统压缩您要访问的文件,则需要使用libzip之类的内容来从APK中读取它们。
答案 1 :(得分:5)
在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 X.X
that allows one to distribute large amount of application data
outside of the .apk (useful for game assets, for example).