2011-10-24 5 views
11

私はAndroidサービスをサーバーソケットポート24にバインドしようとしています。それは特権ポートであるため、バインド例外で失敗しています。 私はこの作業をするために何をする必要があるのだろうかと思っています。 これは、このフォーラムで数回尋ねられましたが、解決策はありません。Androidで1024未満のポートにバインドする方法は?

このサービスはAndroid上で動作するデバイス上で動作します。我々は、デバイスのためのアンドロイドプラットフォームを構築する。私たちに必要なすべてのコントロールがあります。

+1

一般的なLinuxの知識に基づいて、ルートとして実行されるプロセスだけがポート24でリッスンすることができます。ルートとしてJavaアプリケーションを実行できますか? –

+0

合意。このプロセスは、root権限で実行する必要があります。または、管理者権限を持つユーザーIDとして実行する必要があります(AndroidがLinuxのコンセプトをサポートしているかどうかは不明です)。通常、デバイスを制御する場合、Javaではデーモンを作成せず、C/C++でデーモンを作成し、通常のLinuxデーモンを使用して起動します。 – CommonsWare

+1

特権を昇格する「su ...」方法は、私がポートにバインドしているのでオプションではありません。私はシェルスクリプトを生成しようとしていません。すべてのアンドロイドアプリは基本的に接合子から分岐したプロセスなので、接合子が何かに基づいて特権を昇格しない限り、バインドすることはできません。私は、接合体が許すかどうか疑問に思っています。もしそうなら、それは何でしょうか? – videoguy

答えて

0

は、あなたがルートである必要があり、それを行うには、2つの方法があります。

  1. システムアプリ:アプリは、それはrootで実行されなければならないところからシステム/アプリケーションフォルダ/にインストールする必要があります。ただし、ヘルプにはavailableという署名の問題があります。配布もシステムアプリの問題です。

  2. suバイナリ:suバイナリは、単純なexec("su -c [command]")を使用して呼び出すことができます。しかし、物事は終わりよりも簡単です。あなたは、単一のコマンドだけでなく、アンドロイドプロセスを実行する必要があります。したがって、方法を提供し、フルサイズのdoc pageを持つlibsuperuserがあります。

関連する問題