0

원시 소켓 인터페이스를 사용하여 원시 코드의 원시 패킷을 읽도록 Android App을 작성하려고합니다. 내 네이티브 코드가 runtime.exec ("su")를 사용하여 네이티브 코드에 액세스 할 수 있도록 내 핸드폰이 루팅됩니다. 하지만 네이티브 코드와 Java 코드간에 패킷을 효율적으로 전송하는 방법을 모르겠습니다. (이 경우 네이티브 코드와 자바 코드는 서로 다른 프로세스에서 실행됩니다.) 내 앱은 네이티브 코드의 원시 패킷을 가능한 효율적으로 처리해야하기 때문에 둘 사이에 "빠른 터널"이 필요합니다. 어떤 아이디어 나 제안?안드로이드에서 네이티브 코드와 자바 코드간에 데이터/패킷을 전송하는 가장 효율적인 방법은 무엇입니까

P. Android NDK가 싫증 났지만 NDK에서는 원시 코드와 Java 코드가 동일한 프로세스에서 실행되므로 원시 코드가 원시 소켓에 액세스 할 수있는 루트 권한을 가질 수 없습니다.

답변

0

해결책은 다음과 같습니다. JNI를 통해 Java 활동과 대화 할 수 있도록 기본 계층에 에이전트를 생성하십시오. 그런 다음 IPC (바인더)를 사용하여 에이전트와 네이티브 서비스를 연결하십시오.

한 가지 문제 : JNI를 통해 복잡한 데이터 구조를 전달하는 것이 편리하지 않습니다. 그래서 뒤로 물러서서 왜 전체 패킷을 전달하고 싶습니까? 기본 레이어에서 패킷을 처리하고 결과 (예 : 정수) 만 제출할 수 있습니까?

+0

사용자 지정 네이티브 구성 요소간에 바인더를 사용할 수 있지만 약간 까다로울 수 있습니다. 파이프 또는 유닉스 소켓 인터페이스는 개념 상 더 간단 할 수 있습니다. 하지만 실제로 공유 메모리를 최적화하는 데 관심이 있다면 지원됩니다. –

관련 문제