質問: Android Studioで開発をしていて、ADBコマンドでsuを入力するとnot foundが出てきて困っています。 エミュレーターでも実機でも同様に起こっています。 ``` >adb shell generic_x86:/ $ su /system/bin/sh: su: not found ``` 上記のようになっています。 adb shellは動いているので、adbコマンドは動いているはずです。 試しに、下記を行ったら、suはありませんでした。 ``` ls -l /system/bin/ ``` あと、adb rootでもエラーは出ませんが、rootにはなっていないようです。 suコマンドが使えるようにする設定があれば、教えていただきたいです。 また、suコマンドでは別のコマンドに代わっていたりしますか? もし、わかる方がいれば、教えていただきたいです。
回答: 市販の端末にはsuコマンドは実装されていませんし、rootでログインすることもできません。それを実現するためには、所謂root化が必要になりますが、どんな端末でもできることではありませんし、もちろん無保証になります。 AVD(エミュレーター)の場合でも、Google Playが実装されたSystem Imageは市販端末同様、root権限を用いることはできません。質問にあるのはその状況だと思います。 ただ、それ以外のSystem Imageであればrootでログインすることができます。AVD ManagerでCreate Virtual Deviceを選んで、Select a system imageの画面に移ったときに、x86 Imageタブをクリックすると、System Imageのリストが大量に出てきます。 Pie(Android 9.0)を例に採れば、下図のように5つあります。このうち、一番上にある「Android 9.0 (Google Play)」と記されているものが、Google Play実装版です。その下の4つは、Google APIの利用可否とCPUアーキテクチャ(32/64ビット)によるバリエーションで、これらを選択して作成したAVDであればrootでログインすることも可能です。 ! なお、この図にもありますが、Release Name欄にDownloadと表示されているものは未インストールのSystem Imageであることを表していて、これを選択しても先に進むことはできませんが、このDownloadという文字列部分がハイパーリンクになっていて、この部分をクリックすればダウンロードすることができます。