2016-09-29 1 views
1

이전 안드로이드 API 레벨 용 네이티브 공유 라이브러리를 만드는 중입니다. 클라이언트 코드에서 라이브러리의 함수를 호출 할 수 있습니다.네이티브/NDK 공유 라이브러리에서 리소스 파일에 액세스하는 Android

하지만 공유 라이브러리에서 일부 이미지 파일을 사용해야합니다. 참조 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
+0

나는 보통 apk 내부 저장 장치에 이미지를 저장하기 위해 res 폴더에 raw 폴더를 사용합니다. 그러나 파일을 저장하기 위해 java에 몇 가지 함수를 추가해야합니다. 시간이 있다면 나는 예제를 게시 할 것이다. – uelordi

답변

4

this answer에 따르면, NDK는 자산에 접근 할 수있는 API를 제공 폴더 (AAssetManager, here 참조).

또는 프로젝트에서 사용한 쉬운 방법은 필요한 파일을 Java 측의 파일 시스템 (예 :/storage 또는/sdcard)에 쓴 다음 파일 경로 만 NDK에 전달하는 것입니다.

+0

[이 답변] (http://stackoverflow.com/questions/6346889/howto-reference-an-asset-in-a-library-project)을 기반으로 공유 라이브러리는 자산에 액세스 할 수 없습니다 – r0ng

+0

마지막 참조 된 응답의 편집은 Gradle Build System을 사용하여 라이브러리의 에셋에 액세스 할 수 있어야한다는 것을 의미합니다. AAssetManager를 사용하려고 했습니까? –

+0

Android Studio를 사용하지 않으므로 Gradle 빌드 시스템이 나에게 좋은 옵션이 아닌 것 같습니다. – r0ng