서적에 관한 질문 및 오류 등을 문의 할 수 있으며, 저자로부터 직접 답변을 받을 수 있습니다.
ndk 예제를 보며 테스트를 하고 있는데요
void Java_com_example_test_MainActivity_startJNI(JNIEnv *, jobject)
{
printf("test\n");
}
native 함수를 불러오는데요 위와 같은 형식으로 바로 printf를 실행시키면 터미널상에서는 아무 동작을 안하더라구요
그래서 바인더 등록하고 binder->transact(nCallnum, data, &reply); 호출하여
status_t Service::onTransact(uint32_t code, const Parcel & data, Parcel * reply, uint32_t flags)
{
....
printf("test\n");
}
이렇게 하면 터미널에 test라는 메시지가 뜨는데요
native 함수를 이용해서 c내용을 처리하려면 onTransact 함수내에서 처리되어야 하는건가요?
printf 출력의 문제인데,
void Java_com_example_test_MainActivity_startJNI(JNIEnv *, jobject)
{
printf("test\n");
}
부분은 android ndk log 함수를 쓰시면 됩니다.
그리고 android logcat으로 확인하셔야 합니다.
ndk가 되면 java의 일부분으로 보셔야 하고요. binder service의 경우는 일반 c library 를 쓰니 printf가 되는 것입니다.