Как привязать к порту менее 1024 в Android?
У меня есть служба Android, пытающаяся привязываться к порту сокета сервера 24. Поскольку это привилегированный порт, он не работает с исключением привязки.
Мне интересно, что мне нужно сделать, чтобы это работало.
Я вижу, что это задавали пару раз на этом форуме, но без разрешения.
Эта служба запускается на устройстве, которое работает на Android. Мы строим платформу Android для устройства. У нас есть весь необходимый нам контроль.
Ответы
Ответ 1
Чтобы привязать к порту менее 1024, вам нужно быть root, и есть два способа сделать это.
-
Системное приложение. Приложение должно быть установлено в папку /system/apps, откуда он должен быть запущен как root. Тем не менее, есть некоторые проблемы с подписями, для которых < > доступна <. Распространение также является проблемой с системными приложениями.
-
su binary: двоичный код su можно вызвать с помощью простого exec("su -c [command]")
. Но вещи легче сказать, чем сделать. Вам нужно запустить андроид-процессы не только с одной командой. Следовательно, существует libsuperuser, который предоставляет вам методы и имеет полноразмерный страница doc.
Ответ 2
Это очень похожий вопрос: Запускать защищенные API-вызовы как root, android, хотя они пытаются запускать как root по другой причине.
Это заставило меня задуматься об установке "системных приложений", и я увидел это: https://android.stackexchange.com/info/27/rooted-how-to-install-a-system-app