Intereting Posts
Диалоговое окно выбора даты отображается при редактировании текста с двойным щелчком Изменить шрифт для EditText в Android? Фрагмент анимации: разница между setCustomAnimations и setTransitionStyle Как использовать onSaveInstanceState () и onRestoreInstanceState ()? AndroidHttpClient не найден (при работе Robolectric) Android – Преобразование классов с Multidexlist для отладки – Instagram JSON Parser OK / Отмена кнопок в ICS Содержимое Android-сообщества Android Facebook не показано на главной странице Есть ли способ передать параметры установщику на рынке для приложения Как скрыть строку заголовка через код в андроиде Предупреждение о безопасности: приложение содержит встроенные закрытые ключи или файлы хранилища ключей Как распределить выделение Renderscript с помощью OpenGL в Android Android Studio 1.0 и ошибка «Библиотечные проекты не могут установить applicationId» Скользящий ящик сверху Анимированный фон, напоминающий приложение для будильника

Как написать мертвую простую программу SERVER SERVER (не приложение) для Android-устройств?

Прежде всего, я считаю , это не дублирующий вопрос. Я не хочу писать родное приложение с NDK, я просто хочу использовать Android-устройство в качестве дешевого Linux- сервера . Сервер в этом контексте означает программу, которая не имеет интерфейса . Кроме того, сервер написан на голом C ++, но не использует никаких библиотек вообще, поэтому поэтому этот вопрос должен отличаться от других.

История

Мы написали небольшой сервер для Linux, он имеет интерфейс веб-сервера, поэтому вы подключаетесь к нему с помощью браузера, и вы можете играть с ним. Мы собрали его в Linux / x86, Linux / ARM (GuruPlug), Linux / PPC (какой-то NAS) и платформы Mac OS X Darwin.

Версия Linux / ARM также хорошо работает на моем смартфоне Palm Pré. Я только что скопировал исполняемый файл на свой телефон (на сцене webOS нет такой вещи, как джейлбрейк, есть официальный «режим разработчика», который, если вы активируете, введя секретную комбинацию клавиш, вы можете войти на свой телефон с помощью ssh Или использовать локальное приложение ssh). Итак, наша небольшая серверная программа (может сказать, демон) работает даже на самых маленьких Linux-устройствах. (Это смешно, когда вы подключаетесь к вашему браузеру на настольном компьютере с поддержкой giga на сервер смартфонов.)

Серверная программа предназначена для работы даже с самой маленькой Linux (как я уже говорил, она работает на NAS, маршрутизаторе, смартфоне), для этого требуются только STDLIB и PTHREADS .

Вопрос

Какой прямой способ получить эту простую серверную программу на Android-устройстве?

  • У нас пока нет устройства Android. Но я предполагаю, что любой ARM-based будет работать. Объем памяти сервера настолько мал, что это не проблема.
  • Я предполагаю, что устройство должно быть внедрено для копирования исполняемого файла и запуска.
  • Я не хочу устанавливать на устройство совершенно новый Linux. Он должен работать под управлением Android, а наш сервер работает в фоновом режиме. Linux-дистрибутив, достаточный для Dalvik, достаточно для нашего сервера, я уверен.
  • Сервер не должен использовать внешние вещи (USB, сенсорный экран, аудио, камера, микрофон – спасибо, а не) только порт для веб-сервера (например, 8080), который не выделяется Android.
  • У меня есть инструментарий ARM GCC, установка его не является частью вопроса (кроме случаев, когда есть трюки).
  • Установка программы должна быть ручной (scp, что угодно). Кроме того, я не хочу делать пакет или любое автоматическое развертывание.
  • Проблема запуска серверной программы – это еще один вопрос, который мы бы сейчас проигнорировали.

Итак, я хочу просто сделать то же самое с устройством Andrid (телефон, планшет), как и на моем устройстве webOS: скопируйте серверную программу и запустите ее. Компьютеры для этого, запущенные программы, не так ли? 😉

Solutions Collecting From Web of "Как написать мертвую простую программу SERVER SERVER (не приложение) для Android-устройств?"

Вам определенно нужно укоренившееся устройство Android. Я рекомендую вам установить busybox чтобы получить кучу хороших инструментов командной строки, таких как wget, tar, gzip и многие другие. Вы можете получить доступ к оболочке вашего устройства, используя adb shell а затем su чтобы получить доступ root. Вы можете использовать adb push или wget чтобы разместить свой сервер на устройстве.
Системный раздел монтируется как только для чтения, и в зависимости от производителя существует множество защит, которые запрещают вам писать там, поэтому вы должны скопировать сервер где-нибудь на раздел / data (например, mkdir /data/myserver ). После этого все должно быть довольно прямолинейно.

Я на самом деле не пробовал, но должен быть возможно использовать компилятор ARM GCC, который у вас есть, или тот, который был предоставлен Android NDK для компиляции собственного приложения, так же, как вы использовали бы его на своем рабочем столе.

Если ваше приложение мало (не так много файлов), вы можете управлять компиляцией вручную (или в простом Makefile). Следующие команды из руководства по компиляции LuaJIT для Android :

 /tmp$ cat test.c #include <stdio.h> int main() { printf("Hello world!\n"); return 0; } /tmp$ NDK=/opt/ndk /tmp$ NDKABI=8 /tmp$ NDKVER=$NDK/toolchains/arm-linux-androideabi-4.4.3 /tmp$ NDKP=$NDKVER/prebuilt/darwin-x86/bin/arm-linux-androideabi- /tmp$ NDKF="--sysroot $NDK/platforms/android-$NDKABI/arch-arm" /tmp$ ${NDKP}gcc $NDKF -o test test.c /tmp$ file test test: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), not stripped 

Очевидно, используйте linux-x86 вместо darwin-x86 если вы находитесь в Linux (не Mac OS X, также не уверены в Windows), и измените путь к NDK туда, где вы его установили.

Теперь вам нужно переместить скомпилированную двоичную копию на свое Android-устройство и запустить adb shell чтобы увидеть, работает ли она:

 /tmp$ ADB=/opt/sdk/platform-tools/adb /tmp$ $ADB push test /data/ 332 KB/s (3343 bytes in 0.009s) /tmp$ $ADB shell # /data/test Hello world! 

Возможно, вопрос скорее является проблемой sysadmin (как установить исполняемый файл на вашем устройстве Android), чем проблема с разработчиком (как скомпилировать программу C для Android)?

У меня есть chroot-раздел с моим телефоном галактики Android. Это рука с процессором с плавающей запятой, поэтому работают всевозможные компиляторы. Предупреждение: утилиты busybox / android distro utils не запускаются как программное обеспечение GNU. У их смолы проблемы с распаковкой первое, что я пробовал. POSIX tar не поддерживается. У их zip есть проблема с некоторым полем 1 или 8. Их монтирование работает как нечто из космоса. Само их разделение, которое вы захотите использовать, не поддерживает сим-ссылку. После нескольких недель работы над секцией chroot я начинаю чувствовать, что весь Android-это всего лишь новый базовый BIOS с большим количеством прошивки.