adbを使ってアンドロイドデバイス上でシェルスクリプトを実行する

手動で実行することができます:

adb shell
su
chmod 666 /dev/graphics/fb0
export CLASSPATH=/data/local/device.jar
export LD_LIBRARY_PATH=/data/local
exec app_process /system/bin com.device.client.Main /data/local/device.conf &

しかし、プログラムをコンパイルするコンピュータのbashスクリプトから実行できる必要があります。

私が試してみました:

adb shell "su
    && chmod 666 /dev/graphics/fb0
    && export CLASSPATH=/data/local/device.jar
    && export LD_LIBRARY_PATH=/data/local
    && exec app_process /system/bin com.device.client.Main /data/local/device.conf &"

しかし、suシェルに入っているので、これは動作しません。

解決策をお勧めしますか?

0
どんな意味で「うまくいきませんか」?
追加された 著者 John Zwinck,
コマンドはadbシェルで終了し、それ以降のコマンドは実行されません。私が持っていたコードをsuと呼ぶと、次のコマンドではなく "su"をadbシェルで実行させるでしょう
追加された 著者 Nate Radebaugh,

1 答え

これを試して:

adb shell "su -c '
chmod 666 /dev/graphics/fb0
&& export CLASSPATH=/data/local/device.jar
&& export LD_LIBRARY_PATH=/data/local
&& exec app_process /system/bin com.device.client.Main
    /data/local/device.conf &'"

それを単純化することも可能かもしれません:

adb shell "su -c '
chmod 666 /dev/graphics/fb0 &&
CLASSPATH=/data/local/device.jar
LD_LIBRARY_PATH=/data/local
app_process /system/bin com.device.client.Main
    /data/local/device.conf &'"

これは、1つのジョブに対して環境変数を設定できるのは、エクスポートをエクスポートするのではなく、行に前置することだけです。

6
追加された
[1] su -c "chmod 66を殺しました...デバイスがもう認識されません!まだクラッシュしました...
追加された 著者 Nate Radebaugh,