私はAndroidプログラミングを学んでおり、rootとして実行する必要があるアプリケーションを作成したいと考えています。論理的なことは、Androidマニフェストにルート権限を追加することです。
私は このリンク をドキュメントで見ました。特に注意しました FACTORY_TEST
パーミッション :
public static final String FACTORY_TEST
以来:APIレベル1
製造元のテストアプリケーションとして実行し、rootユーザーとして実行します。デバイスがメーカーテストモードで実行されている場合にのみ使用できます。定数値: "Android.permission.FACTORY_TEST"
それが最善の方法ですか?
SDKを使用できない場合、「ルート」アプリケーションを機能させるにはどうすればよいですか?
あなたがする必要があるのは次のようなものです:
Process root = Runtime.getRuntime().exec("su");
これにより、スーパーユーザーが表示され、ルートアクセスを許可またはブロックできます。ユーザーがルート化されていない場合、このアプローチは機能しない可能性があります。 ここ は、テストする方法です。
最初に、基本を正しく理解します。 Android下でLinuxカーネルを実行します。スーパーユーザー権限でプロセスを実行する必要がある場合(rootとして実行する場合)、プロセスを実行する唯一の方法はcommand line
これは、カーネルと直接対話する唯一の方法であるためです。また、コマンドを実行する前にsu
を使用する必要があります。
Process process = Runtime.getRuntime().exec("su");
ほとんど何も達成しません。ダイアログを使用してスーパー使用特権を要求するだけです。できることは、単にsu
を実行する代わりに、次のようにsuでプロセスを実行することです。
Process process = Runtime.getRuntime().exec(new String[] { "su", "-c", yourCommand});
-cオプション
Suのいくつかのオプションで最もよく使用されるのは、su to execute the command that directly follows it on the same line
を示す-cです。そのようなコマンドは新しいユーザーとして実行され、コマンドの実行が完了した後、または起動したプログラムが閉じられた後、suが実行されたターミナルウィンドウまたはコンソールはすぐに元のユーザーのアカウントに戻ります。 詳細 )
代替オプション
上記の方法に代わるもう1つの方法は、コマンドラインを使用してアプリを/system/app/
ディレクトリにコピーすることです。その後、アプリケーションはルート権限で自動的に実行されます(システムアプリと同じ)
SDKには、ルートとしてアプリを実行する方法はありません。