エミュレーターを再起動するために root アクセスを取得するにはどうすればよいですか? 子プロセスと一緒にすべての不要なプロセスを強制終了するにはどうすればよいですか?
4 に答える
エミュレータへのrootアクセス権はすでにあります。プロセスを強制終了し、すべての子がEclipseのデバイスビューを使用するには、エミュレーターtheereを選択し、強制終了するプロセスを選択します。
あなたがそれを探しているなら、私はコードから再開する方法がわかりません。デバイスの再起動は簡単です。デバイスを閉じてから、もう一度起動します。
(私はあなたが望むものを本当に得られないと感じています...)
コマンドラインでプロセスを強制終了するには、シェルで次のコマンドラインを発行するだけです。
kill-9 YOUR_PID
プロセスの名前はわかっているが、pidはわかっていない場合は、
kill -9 $(pidof NAME_OF_PROCESS)
コードで使用することもできます。
Runtime.getRuntime().exec("kill-9 YOUR_PID");
詳細については、manページを確認してください:http://unixhelp.ed.ac.uk/CGI/man-cgi ?kill
ps-再起動後、特定のアプリとその子プロセスを除くすべての不要なプロセスを強制終了して、エミュレーターで実行したいと考えていました。
それが本当にやりたいことである場合-Androidビルドを汎用組み込みLinuxとして再利用する場合、それを行う方法は、アプリケーションを起動するinit.rcを含むRAMディスクイメージ(Androidがカーネルにパックする)を再生成することですAndroid ネイティブ サービスと (Java 風の dalvik) Android ランタイムではなく。RAM ディスクの再構築には、UNIX ライクな OS と、Web 検索で見つけられる難解な cpio コマンド ラインが必要です。うまくいかないさまざまなことをデバッグできるように、ADBの起動をそこに残しておきたいと思います。
テスト目的で、adb シェルから「stop」と入力するだけで、Android ランタイムがシャットダウンされ、UI のない仮想ポケット Linux ボックスが提供されます。いくつかのネイティブ サービスは引き続き実行されますが、害よりも役立つ可能性があります。最終的には、追加するものに OOM キラー値を設定する必要があるかもしれませんが、多くのメモリを消費しない場合は、ランタイムが問題にならない可能性があります。
または、非常にロックダウンされた制限付きの UI を Android ランタイム上に構築したい場合は、代わりにカスタム ホーム画面を開発し、変更されていないエミュレーターでこれをテストしてから、不足するようにカスタマイズされたビルドに展開します。他のアプリケーションをインストールする手段。
Android のほとんどの su バイナリは、SuperUser.apk (市場から無料で入手可能) に依存しています。su バイナリは、この apk を使用して、要求されていることを実行してもよいかどうかをユーザーに尋ねます (ユーザーは答えを記憶することを選択できます)。そのような su を使用している場合は、その apk も必要です。
部品が配置されると、アプリケーションは正しい引数でプロセスを生成できます... argv[0]="/path/to/su", argv[1]="-c", argv[2] のようなもの="(実行したいコマンドは何でも)", argv[3...n]=コマンドの引数。