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