2010-11-17 2 views
0

Im совершенно новый на Android, и у меня есть вопрос для всех вас, кто эксперты! Хорошо, моя проблема ... Я реализовал клиент-серверное приложение, основанное на программировании сокетов. Сервер кодирует некоторые пакеты, отправляет их клиенту через сокет, а клинет декодирует их. Я протестировал код с помощью двух Linux-машин, и он отлично работает, но в моем эксперименте требуется включить другой узел (это будет Android). Таким образом, сервер (linux machine) будет кодировать пакеты и отправлять через сокет клиенту1 (linux machine) и client2 (Android). По этой причине я хочу портировать собственный код моего кода (который находится на C++) на Android. Как я могу это сделать?порт родной C++ нестационарный бинарный на Android

Прошу помочь. Действительно, полностью застрял!

Спасибо,

Zenia

ответ

1

, когда вы хотите порт родной код C/C++ для андроид вы хотите посмотреть андроид NDK и JNI

http://developer.android.com/sdk/ndk/index.html

http://download.oracle.com/javase/1.5.0/docs/guide/jni/spec/functions.html

Есть некоторые примеры в НДК о том, как это сделать.

следует предупредить, что C полностью поддерживается, но поддержка C++ apis очень ограничена для android (список находится в документах ndk), поэтому у вас могут возникнуть проблемы с переносом вашего кода.

Я бы рекомендовал использовать непосредственно Java, если вы можете, так как работа с JNI утомительно лол

0

Спасибо за ответ,

я впервые попробовал написать свой собственный код полностью в Java с помощью сокетов, но я пришлось переносить некоторые оптимизированные библиотеки на Android, и я мог бы выяснить, как это сделать (я мог бы переносить небольшую небольшую библиотеку, но не тот, который мне нужен). Я сдался, и сейчас я пытаюсь играть с jni и ndk. однако я не знаю, действительно ли я мог бы переносить свой двоичный файл, поскольку он не статичен (как мир привет). Вот почему я спрашиваю. Если у кого-то еще есть опыт, сообщите мне. спасибо,

Zenia

+0

Это, кажется, не ответ; вы намеревались добавить комментарий вместо этого? – MSalters

0

То, что вы, вероятно, следует сделать, это установить SDK и NDK и построить привет-JNI NDK пример.

Затем посмотрите, как получить доступ к выходному сигналу android logcat из C, и напишите себе симпатичную небольшую оболочку, подобную printf (возможно, используя версию vargs базовой функции), чтобы вы могли легко генерировать отладочный вывод из вашего родного код.

Затем перенесите свой собственный исполняемый файл на примерный код hello-jni, так что у вас будет java-обертка, которая делает очень мало, кроме как начать с вызова собственного кода. Просто помните, что не делайте много обработки в потоке пользовательского интерфейса или в собственном коде, вызываемом под этим потоком, или вы рискуете, что приложение не ответит на таймаут.

Также возможно (ab) использовать gcc ndk для создания автономных исполняемых файлов, не содержащих java-обертки, но это обескураживает. Трудно найти надежное место для их установки на некорневом телефоне, а управление процессами в Android не радует неизвестных родных процессов. Другими словами, это путь, который подходит для личных экспериментов на вашем собственном устройстве, но сложный и не соответствующий будущим требованиям для приложения, развернутого для других.

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