안드로이드 개발 질문/답변
(글 수 45,052)
C++ 프로그램 소스가 있는데 도스창에서 C:\source> source -i data.txt -o data.out 이런식으로 치면
data.txt 파일을 입력받아서 알고리즘 처리하고 data.out 파일을 출력하는건데요. (source -i 입력파일명 -o 출력파일명)
JAVA로 SD카드에 TXT파일을 저장하는거랑 SD카드에서 출력파일을 읽어와 보여주는 것은 구현했는데, 이걸 C++ 프로그램으로 보내서 실행시키는 걸 잘 모르겠네요;
NDK, cygwin은 설치했는데 뭐부터 해야할지..
C++ 소스에서 파일을 읽는 경로를 안드로이드 SD카드의 경로로 바꿔놓고, JAVA에서 String으로 파일명을 전달하는게 맞는건가요
그렇다면 경로를 어떻게 설정해야 하는 건지요
아니면 JAVA에서 경로값과 파일명을 함께 전달하는게 맞는건가요.
JNI폴더에 네이티브C++코드넣고, C++헤더파일만들고, Android.mk 파일 만들고, ndk-build명령으로 .so파일 만들고, JAVA파일에 네이티브 메소드 만들기.. 검색하고 책 찾다가 이런 방법을 보았는데요. 저같은경우는 파일명만 전달해주면 될 거같고, 실행시켜서 SD카드에 저장되게끔만 하면 되는데 JAVA에서 값을 넘겨받고 실행하는 네이티브C++ 코드를 어떻게 해야할지 잘 모르겠네요.




C++ 에서도 SD 카드 경로를 "/sdcard/...: 으로 하시면 됩니다.
우선, JNI 에 대해 알아보셔야 할 것 같네요. ( http://java.sun.com/docs/books/jni/html/jniTOC.html )
자바와 C/C++ 네이티브 코드와 연동하려면 jni wrapper 루틴이 있어야 합니다.
자바에서 String 으로 파일명을 전달해주면 C/C++ jni 루틴에서는 jstring 인자로 받아
(*env)->GetStringUTFChars 함수로 변환해주면 됩니다.( http://java.sun.com/docs/books/jni/html/objtypes.html )