0

Я собираюсь написать приложение для Android, чтобы читать необработанный пакет из собственного кода с использованием интерфейса raw socket. Мой телефон укоренен, поэтому мой собственный код может получить доступ к собственному коду с помощью runtime.exec («su»). Но я не знаю, как эффективно передавать пакеты между собственным кодом и кодом Java. (В этом случае нативный код и код Java работают в разных процессах). Поскольку мое приложение должно обрабатывать необработанные пакеты из собственного кода как можно эффективнее, мне нужен «быстрый туннель» между ними. Любые идеи или предложения?Каков наиболее эффективный способ передачи данных/пакетов между собственным кодом и кодом Java в Android

P.S. Я устал от Android NDK, но в NDK собственный код и код Java работают в одном процессе, поэтому собственный код не может иметь привилегии root для доступа к raw-сокету.

ответ

0

Решение: создать агент на нативном уровне, чтобы он мог взаимодействовать с вашей java-активностью через JNI. Затем подключите агента и свой собственный сервис с помощью IPC (связующего).

Одна проблема: передать сложную структуру данных через JNI непросто. Итак, отступите назад, почему вы хотите передать целые пакеты? Можете ли вы обрабатывать пакеты на собственном уровне и отправлять результат (например, целые числа)?

+0

Использование Связующего между пользовательскими Родными компонентами возможно, но может быть немного сложным. Интерфейс сокетов pipe или unix может быть концептуально проще; хотя, если действительно нужно оптимизировать общую память, поддерживается. –

 Смежные вопросы

  • Нет связанных вопросов^_^