いいハコ作ろう

Eligor13's diary

パソコン無しでもADBが使えるようにしよう

非rootでもPCに接続してadbコマンドを使うことで、「ドコモ端末でMVNOを使う場合のテザリング問題の解決」や「不要なキャリアアプリの停止/凍結」ができるようになったことがよそのブログでも公開されています。

今回は、出先などでPCが無いところでも端末だけでこれらの設定変更ができるようにする方法です。
f:id:Eligor13:20150409210420j:plain

まずはterminal emulatorというアプリをインストールしておきます。このアプリを使えばキーボードから入力したコマンドが実行できるようになります。


Android Terminal Emulator

Jack Palevich
価格:無料  平均評価:4. 4(80,926)

f:id:Eligor13:20150409094053j:plain
"pm block パッケージ名"というのがパッケージを無効化するコマンドですが、結果はKilledと出力されています。これはコマンドから呼んでいるサブコマンドに実行権限が無いためシステムによって停止されて失敗したことを意味しています。
つまり、ターミナルエミュレータからの直接実行ではPCで繋いでadbを実行した時のような権限が得られないというわけですね。

でも、adb をネットワーク経由で自分自身に繋ぐことができます。そうすればPCに繋いだ場合と同様の権限を使えるようになるのです。

PCでの準備

PCでadbが実行できるようにしておき、USBケーブルで端末を繋ぎます。
f:id:Eligor13:20150409094031j:plain
"adb tcpip 5555"というのが5555番ポートを使ってネットワーク接続を待てという命令です。
PCのコマンドプロンプトで上にあるように実行したあと、USBケーブルを抜きます。
ここまで済ませておけば、あとは端末だけでできます。

端末側での設定

f:id:Eligor13:20150409094059j:plain
端末のターミナルエミュレータを使って、ネットワーク経由で自分自身をadb接続します。(127.0.0.1というのが自分自身のネットワークアドレスです。127.0.0.1の代わりにlocalhostと書いても同じです)

f:id:Eligor13:20150409094105j:plain
初めて接続した場合、USBデバッグを許可するかどうかのダイアログが出るので、「このパソコンからのUSBデバッグを常に許可する」にチェックを入れてOKをタップします。

f:id:Eligor13:20150409094111j:plain
adb device を実行して接続できているか確認しましょう。

端末側での実行

f:id:Eligor13:20150409094116j:plain
今度はコマンドの前に"adb shell"を付けて、最初のコマンドを実行してみましょう。
今度は"new blocked state: true"となりました。成功ですね!

f:id:Eligor13:20150409094121j:plain
終わったら、"adb disconnect" をすることでadbの接続を終了します。

応用

PCで一括実行するのと同じように、端末だけでも一括実行ができます。
例えば、

adb shell pm block com.android.contacts
adb shell pm block com.android.dialer
adb shell pm block com.mcafee.android.scanservice

のようなファイルを作っておいて端末のDownloadフォルダに置いておいて実行してみましょう。

f:id:Eligor13:20150409094126j:plain
"sh ファイル名"とすることでWindowsのbatファイルのように連続で中身のコマンドを実行することができます。
"new blocked .." の行が3つ出力されているので3つとも正しく実行されたことがわかります。(trueの後にactsやerがあるのは表記上のゴミですねw)

注意

ちなみに、今回の方法は再起動や電源OFFすると無効になってしまいます。その場合には、もう一度PCに繋いで最初の設定をすることで有効になります。

では、また〜