Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

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

Ответ 2

Проверьте 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).