Чтение файлов ресурсов из моего собственного APK в собственной среде Android

Портирую на Андроид. В моем существующем проекте есть множество файлов ресурсов, которые я переношу в свой проект Android. Все они у меня находятся в / res / raw /, и я хотел бы получить доступ к этим ресурсам в моей собственной библиотеке с помощью таких функций, как fopen () и т. Д. Можно ли это сделать, или мне для этого также нужно пройти JNI? Я бы действительно предпочел не делать этого из-за простоты переноса и возможных соображений скорости и памяти.


person Kyle    schedule 16.04.2010    source источник


Ответы (2)


Если вы предотвратите сжатие своих ресурсов при их добавлении в ваш APK, тогда вы можете использовать openRawResourceFd () для получения дескриптора файла, offset и size и передать их в собственный код, где вы просто выполняете команды fopen и fseek. С другой стороны, если вы позволите системе сборки сжимать файлы, к которым вы хотите получить доступ, вам нужно будет использовать что-то вроде libzip, чтобы прочитать их из APK.

person Tim Kryger    schedule 18.04.2010

Проверьте obb.h в ndk.

Из docs / STABLE-APIS.html в Android NDK:

<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).
person Justin Buser    schedule 28.08.2012