서적에 관한 질문 및 오류 등을 문의 할 수 있으며, 저자로부터 직접 답변을 받을 수 있습니다.

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 함수내에서 처리되어야 하는건가요?


고도리

2015.02.03 20:01:28
*.151.13.213

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가 되는 것입니다.

ice179

2015.02.03 22:37:10
*.150.142.33

감사합니다 영역이 다른거네요

전호철

2015.02.04 02:35:42
*.162.60.30

자바 런타임에서 printf 표준출력을 막는것같더군요. 옛날에 코드 뒤적이다가 본것같은데... 

List of Articles
번호 제목 글쓴이 날짜 조회 수

사용자 로그인