2016-09-29 123 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