Android,从 native/NDK 共享库访问资源文件

Android, accessing resource files from a native/NDK shared library

我正在为较旧的 android API 级别创建本地共享库。我能够从客户端代码调用库中的函数。

但我需要使用共享库中的一些图像文件。参考文献1 && 3中提到了一种使用java代码访问资源文件的方法。我的问题是:有没有办法让我使用(类似于 fopen(res_path))c/c++ 函数来打开资源文件?

库源结构为:

.
├── AndroidManifest.xml
├── Android.mk
├── Application.mk
├── res
│   └── drawable
│       ├── 0.jpg
│       ├── 1.jpg
│       ├── ...
│       └── 9.jpg
├── MyApp.cpp
└── MyApp.h

提前致谢


环境:

ndk 版本:ndk-r12b
编译器:gcc c/c++ 4.9.x
AOSP:5.1.1_r30
API 等级:22

参考资料:

  1. how to access resources in a android library project
  2. providing resource on android
  3. Accessing resources on android

根据this answer, the NDK provides an API to access the assets folder (AAssetManager, see here)。

或者,我在我的一个项目中使用的一种简单方法是将必要的文件写入 Java 端的文件系统(例如 /storage 或 /sdcard),然后只将文件路径传递给NDK.