exec()の使い方

1,501 views
Skip to first unread message

karamu

unread,
Oct 15, 2013, 10:41:49 PM10/15/13
to android-g...@googlegroups.com


よろしくお願いいたします。

Activityにボタン処理を
======================================
try {
  Runtime.getRuntime().exec(new String[]{"su","-c","reboot"});★
} catch (IOException e) {
  e.printStackTrace();
}
======================================
上記のようにしています。
特にExceptionは発生しないものの、エミュレータはrebootされることもなく
Activityは表示されたままでした。

★箇所を
Runtime.getRuntime().exec(new String[]{"/system/bin/su","-c","reboot"});
とした場合は下記のようなExceptionが発生します。
java.io.IOException: Error running exec(). Command: [/system/bin/su, -c, reboot] Working Directory: null Environment: null
at java.lang.ProcessManager.exec(ProcessManager.java:211)

ここで質問なのですが、エミュレータでexec()を
使ってのリブートはできないのでしょうか。
exec()の使い方がおかしいのでしょうか。
アドバイスいただけると幸いです。

MORIHIRO

unread,
Oct 16, 2013, 12:23:56 AM10/16/13
to android-g...@googlegroups.com
なんとなくroot権限関連の話なんだろうとは思いますが、
まずはlogcatではなくって標準出力・エラー出力の内容を
確認してみては如何でしょうか?

  Java外部プロセス起動メモ(Hishidama's Java Process Memo)
  http://www.ne.jp/asahi/hishidama/home/tech/java/process.html#Process_Stream

2013年10月16日水曜日 11時41分49秒 UTC+9 karamu:

karamu

unread,
Oct 16, 2013, 2:12:33 AM10/16/13
to android-g...@googlegroups.com

アドバイスありがとうございます。

恥ずかしいことに、標準出力・エラー出力も知らなかったので、手間取ってしまいましたが
教えて頂いたサイトを参考に組み込んでみました。
下記のようなエラーが出力されておりました。(rebootなしで、suだけ指定しても同じ)
su: uid 10037 not allowed to su 
 
上記サイト様に
「エミュレータに入っているsuコマンド(/system/xbin/su)では、rootになろうとすると"su: uid 10018 not allowed to su"のように、エラーとなってしまいます。これはsuコマンドが実行ユーザのuidをチェックし、rootしか実行できないようにしている為です。」
と記載があり、解決策としてuidチェック箇所をはずしたsuを「system/xbin」におきなおすとよいとありましたので
早速トライしてみました。
しかし、「Failed to push selection: Read-only file system」となり、Pushできませんでした。
上記サイト様を参考にmount してみたのですがそれでもだめでした。
エミュレータ(root)でもsystem配下のファイル更新はできないものなのでしょうか・・・。

noxi

unread,
Oct 16, 2013, 2:23:20 AM10/16/13
to android-g...@googlegroups.com
noxiです。

昔同じようなことをやりましたが、エミュレーターのsystemいじるのは非常に面倒臭かった記憶があります。
この辺参考にしてみて下さい。

Android SDKのエミュレータにGoogle Play StoreとSuperuserを入れてみる
http://skyfreaks.dip.jp/?p=425


2013年10月16日 15:12 karamu <karamuk...@gmail.com>:
> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループから退会し、メールの受信を停止するには、android-group-j...@googlegroups.com
> にメールを送信します。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> http://groups.google.com/group/android-group-japan からこのグループにアクセスしてください。
> その他のオプションについては、https://groups.google.com/groups/opt_out にアクセスしてください。

karamu

unread,
Oct 16, 2013, 9:07:08 PM10/16/13
to android-g...@googlegroups.com
noxiさま
 
アドバイスありがとうございます。
 
参考サイト様とても助かりました。
さっそくトライしてみたいとおもいます。
Reply all
Reply to author
Forward
0 new messages