안드로이드 개발 질문/답변
(글 수 45,052)
안드로이드에 대해선 완전 초보구요..
이번 프로젝트에 안드로이드 관련 프로그램을 개발해서 지금 공부 중입니다.
안드로이드 NDK가 C나 C++로 작성한 소스의 라이브러리를 형성해서 이클립스에서 실행이 가능한걸로 저는 이해를 했는데..
맞는건지요..ㅠㅠ
그래서 NDK를 설치하고, 시그윈을 실행하여 예제파일을 컴파일을 해보았는데.. 처음꺼는 실행결과가 나왔습니다.
그런데 다른 예제를 해보려고 하니깐 이상한 메시지가 뜨는데요.
Android NDK: Application hello-jni targets platform 'android-6'
Android NDK: which is not supported by this release of the
Android NDK
build/core/add-application.mk:76: ***Android NDK: Aborting... . Stop.
이렇게 뜹니다.. 아시는 분 알려주세요~
그리고 제가 C언어로 작성한 프로그램을 NDK로 이용해서 돌려볼려면 어떻게 해야하는 지도 알려주세요~
부탁드립니다ㅠㅠㅠ
이번 프로젝트에 안드로이드 관련 프로그램을 개발해서 지금 공부 중입니다.
안드로이드 NDK가 C나 C++로 작성한 소스의 라이브러리를 형성해서 이클립스에서 실행이 가능한걸로 저는 이해를 했는데..
맞는건지요..ㅠㅠ
그래서 NDK를 설치하고, 시그윈을 실행하여 예제파일을 컴파일을 해보았는데.. 처음꺼는 실행결과가 나왔습니다.
그런데 다른 예제를 해보려고 하니깐 이상한 메시지가 뜨는데요.
Android NDK: Application hello-jni targets platform 'android-6'
Android NDK: which is not supported by this release of the
Android NDK
build/core/add-application.mk:76: ***Android NDK: Aborting... . Stop.
이렇게 뜹니다.. 아시는 분 알려주세요~
그리고 제가 C언어로 작성한 프로그램을 NDK로 이용해서 돌려볼려면 어떻게 해야하는 지도 알려주세요~
부탁드립니다ㅠㅠㅠ
2010.04.06 10:39:56
예제나 그런게 어떻게 되어 있는지 알아야 알수 있을듯 합니다.
간단하게 NDK에 동작에 대해서 말씀드리겠습니다.
1. NDK는 리눅스의 sharded object인 .so를 만들어서 안드로이드 프로젝트의 libs폴더에 넣어 라이브러리를 Load해서 사용합니다.
2. JNI를 통해서 C/C++에서 자바 메소드를 호출할수 있고, 자바에서 C/C++함수를 호출 할 수 있습니다.
3. 제가 해 본바로는 C와 C++는 혼용이 안되더군요. C로 하려면 처음부터 C로 하고 C++로 하려면 C++로 해야 합니다.
C와 C++가 각각 JNI를 구현하는데 함수 인자들이 좀 다릅니다.
4. 컴파일이 .so를 만들때 기 컴파일된 .a(static library)를 가져와서 같이 컴파일 가능합니다.
5. NDK에서 C/C++및 기본적인 standard c library의 사용이 가능하고. File IO, 폰트등은 리눅스의 것을 사용합니다.
6. 프로젝트를 만들때 .mk라는 makefile system에 대한 기본 지식이 있어야 합니다. 보통 리눅스 프로그래밍을 해 보셨으면
makefile system은 습득하셨을 겁니다. 약간 다른 부분도 있기는 한데 대충 필요한것이 include폴더 지정하는 것과
Source파일 등록, 라이브러리 타입설정, 선행처리기(#define) 선언등이 있겠네요.
저도 NDK로 adobe Flash 플레이어 어플을 만들었는데, 자료가 많이 없어서 너무 힘들었네요.
주로 안 되는 부분이 있으면 구글링해서 찾는 것이 제일 빠르네요.
아울러 자바 JNI부분도 참고를 하시면 됩니다.
ndk 1.6은 level 4. 즉, 안드로이드 1.6버전까지 지원하구요. 버전 체크 다시 해보세요.