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

时间:2010-04-16 09:16:30

标签: android file-io android-ndk

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

2 个答案:

答案 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).