パーティションをマウントし、Android システムでいくつかの操作を実行するスクリプトを作成しました。スクリプトを Android の /bin フォルダーに install.sh として保存しました。
ADB からスクリプトを呼び出したいのですが、スクリプト自体は Windows 上のバッチ ファイルから呼び出されますが、root として実行する必要があります。
私が最初に試した解決策は、スクリプトを次のように呼び出すことでした。
adb shell "su -c sh /bin/script.sh"
しかし、シェルアクセス(ルート権限付き)はできますが、何も実行されないので動作しません。また、
adb root "sh /bin/script.sh"
しかし、次のエラーが発生しました
adbd cannot run as root in production builds
私はその後、書こうとした
su -c "command"
私のスクリプトではルート アクセスが必要なすべてのコマンドを実行しましたが、同じ問題が発生します。スクリプトを実行すると、ルート シェルのみが取得され、何も実行されません。
最初の解決策を手動で使用した場合(たとえば、adb shell su を呼び出し、次にスクリプトを呼び出す)、それは機能します。ただし、全体的なポイントは、プロセスを自動化して、adb shell を別のスクリプトから呼び出すことができるようにすることです。
これを実現するにはどうしたらよいか、何かアイデアはありますか?
ありがとう !
ベストアンサー1
これは私にとってはうまくいきます:
myscript.bat を作成し、その中に次のコードを配置します (スーパーユーザー モードで実行されるコマンドを単一引用符で囲むことに注意してください)。
adb shell "su -c 'command1; command2; command3'"
次に、DOS シェルから myscript.bat を実行します。
注: この状況では、DOS の行継続文字 (^) は機能しないようです。つまり、次のコードは機能しません。
adb shell "su -c '^
command1; ^
command2; ^
command3'"
その結果、「構文エラー: 引用符で囲まれた文字列が終了していません」というエラーが発生します。