15

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

4

2 回答 2

15

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

于 2010-04-18T21:05:28.610 回答
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).
于 2012-08-28T02:50:59.510 回答