2016-09-29 95 views
1

我正在为较旧的android API级别创建本机共享库。我可以从客户端代码调用库中的函数。Android,从本地/ NDK共享库访问资源文件

但我需要在共享库中使用一些图像文件。参考文献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
+0

我通常使用res文件夹中的原始文件夹来存储apk内部存储器中的图像。但是你需要在java中添加一些函数来存储你的文件。如果我有时间,我会发表一个例子。 – uelordi

回答

4

根据this answer,NDK的提供了一个API来访问资产文件夹(AAssetManager,请参见here)。

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

+0

基于[这个答案](http://stackoverflow.com/questions/6346889/how-to-reference-an-asset-in-a-library-project)一个共享库无法访问资产 – r0ng

+0

最后一个参考答案的编辑指出,使用Gradle Build System,您应该能够访问库中的资产。您是否尝试使用AAssetManager? –

+0

因为我没有使用Android Studio,所以Gradle构建系统似乎对我来说不是一个好选择。 – r0ng