안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요.
NDK로 뭔가를 해보려고 합니다. 아니, 뭔가를 해야하는 상황입니다.
NDK개발환경 셋팅하고 예제를 보니
NDK 로 어떠한 함수 등을 정의하고 JAVA코드에서 이것을 호출하는 형식이더군요.
질문1. 혹시 NDK에서 JAVA로 작성된 Service 등을 호출할수 있을까요?
질문2. 예를들어 C로 된 android API 같은것이 있나요?
제가 NDK개발에 대해 아는것이 없어서 질문 내용 자체가 뭔가 말이 안되는것 같기도 합니다.
NDK개발에 접근하기 위한 어떠한 조언 있으시다면 부탁드리겠습니다.
감사합니다.
2011.06.27 19:37:44
얼마전 제가 삽질한것과 거의 비슷하신것 같네요.
일단 서비스와 통신하는방법은 저는 Intent broadcasting으로 해결 했습니다. 구글링 해서 예제를 찾긴 찾았는데 안되더라구요ㅋㅋ 하여튼 방법이 있습니다.
android api는 따로 없고요. 공부 하시면 알게되시겠지만 jobject jmethodid callmethod 와 같은 것들을 잘 조합 하시면 가능합니다.
그럼 꾸벅..
일단 서비스와 통신하는방법은 저는 Intent broadcasting으로 해결 했습니다. 구글링 해서 예제를 찾긴 찾았는데 안되더라구요ㅋㅋ 하여튼 방법이 있습니다.
android api는 따로 없고요. 공부 하시면 알게되시겠지만 jobject jmethodid callmethod 와 같은 것들을 잘 조합 하시면 가능합니다.
그럼 꾸벅..




뭘 만드시려는 건지는 모르겠지만...
안드로이드 API 라는게 뭐 예를들어 Button이라던가 ListView라던가 그런걸 말씀하신다면 C에는 그런것이 없습니다.
그런것은 Java로 짜야합니다.
안드로이드 API 이용한 UI 같은것은 다 Java로 짜고,
속도가 매우 중요한 core 부분을 작성한다던지,
기존에 C로 작성된 라이브러리를 사용해야 한다던지 하는 경우에 쓰라고 있는 것이 NDK 입니다.
최근에 나온 NDK에서는 많은 기능이 추가되어
java 하나도 안쓰고, 순수하게 C 코드만으로도 안드로이드 어플을 만들수 있게 되어있습니다.
하지만 그렇다고 해서 안드로이드 java API의 기능을 다 쓸수 있다는 뜻은 아닙니다.
그냥 화면 출력하거나, 가속도 센서값을 읽어오거나, activity가 create 되고, pause 되고 이런 시점에 호출되는 함수를 작성하고...
이런 것이 가능하다는 뜻입니다.
(예를들어 기존에 openGL 이용해서 C로 만든 게임같은 것을 안드로이드로 포팅하시려면 굳이 java 코드 작성할 필요없다는 것이죠...)
안드로이드 책 아무거나 보시면 NDK 가 대략 설명이 되어 있습니다.
저는 아직까지 NDK를 깊게 다룬 책은 본적은 없습니다.
그냥 JNI 자료 찾아서 공부하시고, android NDK sample 소스 보시고, document 보시고 이러면서 약간 삽질이 필요합니다. ^^