私のPC上のシェルから、adb shell cmd package list packages
を実行して、インストールされているすべてのパッケージのリストを取得できます。私は端末エミュレータ(現在はTermuxを使用しています)でAndroid端末(Nexus 6P)でこれと同様のコマンドをローカルに実行したいと思います。Androidデバイスの端末エミュレータで「adbシェル」コマンドをローカルで実行するにはどうすればよいですか?
/system/bin/sh
で同じシェルを開き、次に/system/bin/cmd package list packages
を実行しようとすると、何も起こりません(エラーはなく、何も出力せず、プロンプトを再ロードします)。
/system/bin/cmd -l
を実行すると、オプションの一覧が期待どおりに表示されます。 $PATH
と$LD_LIBRARY_PATH
は両方の環境で同じです。主な違いの1つはecho $USER
がadb shell
から "shell"を返しますが、私のローカルユーザー名は/system/bin/sh
からTermuxから起動されます。
Androidのローカル端末エミュレータでadb shell
から実行されるコマンドの動作を複製する方法はありますか?
編集: 私のデバイスはrootedであり、私はrootのみのソリューションでOKです。
あなたが参照することがあり、それ自身の
sush
シェルではなく、システムのシェルを使用するように指示し、適切なSELinuxのコンテキストを設定してログインするtructs –リンクありがとうございます。しかし、私はリンクが実際に私が望むものの逆をしようとしていると思う:adbからtermuxの動作をエミュレートする。私は実際には、デバイス上でローカルに実行されているシェルで 'adb shell'から実行されるコマンドの動作をエミュレートしたいと考えています。私の混乱は、同じバイナリを同じデバイス上で使って同じバイナリを実行していて、別の出力を得ていることです(技術的にはローカルで実行すると出力がありません)。 – rjdang