駅前散策ブログ@かわさき HOT

ポリコレを拗らせたアサシンクリード新作とか逆に興味深い

【RPA】【MacroDroid】Android11以降限定ですが、端末のみでLADBを用いてADBハックし、MacroDroidをより便利に使う方法。

2022-04-16 12:56:38 | Macrodroid&RPA関連
(´・ω・)ノ < らいなーです。


まず結論を申し上げると、
WIFI環境とLADBというAndroidアプリケーションを用いる事によって、
Android11以降の環境限定にはなってしまいますが、
別にパソコンがなくてもADBハックが出来ちゃいますよ、
なのでMacroDroidの一部制限された機能も使えるようになってしまいます。というお話。



・初めにLADBのお話。

Androidの、有料アプリケーションにはなってしまうのですが、
LADB - Local ADB Shellというアプリケーションがあります。

ダウンロードは↓こちらから

このアプリケーションは米國ロサンゼルスに開発拠点を置くtytydraco(Tyler Nijmeh)さんにより作成されているアプリケーションで、お値段は通常310円で、年に数回行われるセールで170円となることがあります。
*GithubからDLしてコンパイルできるヒトはただで使えるかもしれませんね



しかしながら、このアプリケーション、使い方に関する文献がネット上に全くと言っていいほど転がっておらず、私も暫く有用な使い方がわからずに暫く放置していた、という経緯をもつアプリケーションです。

先日、ふとしたきっかけで使い方がわかったのと、そこから派生して、
MacroDroidにも活用できることがわかったので、ブログの記事として書いてみようと思います。


・まずは公式ドキュメントを日本語訳してみよう。
(以下、毎度のらいなー訳で申し訳ありません。)

警告:
LADBはAndroid11以上の32bitデバイスには対応しておらず、新しいペアリング方式はサポートされません。
64bitデバイスでは問題なく動作します :)


どのように動作するのでしょう?:
LADBは、アプリケーションライブラリ内にADBサーバーを組み込んでいます。
通常、このサーバーは、有効なUSB接続が必要なため、ローカルデバイスに
接続することはできません。

しかし、AndroidのワイヤレスADBでバック機能を利用することで、サーバーと
クライアントがお互いにローカルで会話することができるようになります。

初期セットアップ:
1. 設定>デバイス情報>ビルド番号>7回タップします。
 [訳者補足:これで開発者向けオプションが有効になります。]
2. 設定>システム>開発者向けオプション>ワイヤレスデバック>ONにします。
3. 設定>システム>開発者向けオプション>USBでバックをONにします。

トラブルシューティング:
「デバイスが認証されていません」または「複数のデバイスが接続されています」
と表示される場合、こちらをお試しください。

1. 機内モードを有効にしてみる
2. USBデバイスをすべて外してみる
3. LADBを終了し、再起動する


それでもうまくいかない?こちらをお試しください。
1. LADBを[訳者注:強制終了で]完全に閉じます
2. 設定>システム>開発者向けオプション>ワイヤレスデバック>OFFにします
3. 設定>システム>開発者向けオプション>USBデバック>OFFにします
4. 設定>システム>開発者向けオプション>「開発者向けオプションの使用」をオフにします
5. お使いの端末を再起動します。
6. 設定>システム>開発者向けオプション>ワイヤレスデバック>ONにします
7. 設定>システム>開発者向けオプション>USBデバック>ONにします
8. 機内モードを有効化します
9. LADBを起動します

それでもダメ?
tylernij@gmail.com にメールしてください。

このアプリはGitHubでオープンソースとして公開されています。
https://github.com/tytydraco/LADB

・ぶっちゃけ、どんな仕組みで動くのさ?

たぶんですが、

こんな感じでは、と思う次第です。


・公式ドキュメントには書かれていない「ポイント」がありました!

前述の公式ドキュメントを見ながら使ってみようとしたのですが、問題が発生。
Shell Commandが有効にならず、ペアリング待ち!なんてメッセージが出るのです。
しかし、LADB起動時に表示されるPairing Infomation、ここにヒントが書かれていました。

Open LADB and Settings using Split Screen to prevent the code from changing.

と。

ようは画面分割を使いながら、設定しなければならない!
ということです。ここに嵌ってしまいまして、まぁ…

同じLAN内に複数の端末を設定して、アクセスを試してみたりとか、色々やってみた
と思っていただければと思います。


・ようやく使い方がわかったので、LADBによるADBハックの手順。

1. LADBを開くと、Pairing Infomationが表示され、PortとPairing Codeの入力を促されます。この画面が表示された状態で、まずは画面分割による表示を行います。





2. 画面分割を行ったら、片方の画面はLADB、もう片方はAndroidの設定>システム>開発者オプションを開きます。




3. ワイヤレスデバックをONにします。(このワイヤレスデバックは、Android11以降でしか基本的に実装されていませんので、ここに書かれている手法は原則* Android11以降でしか有効ではありません。)
このとき、WiFi接続を必ず必要としますので、ご自宅の無線LANなど、安定したWiFiにご接続ください。



*原則、と書いたのは、実はLinegeOS18ではワイヤレスデバックオプションが、「Android10ベースにも関わらず」存在するので、microGに連なるGoogleアプリを組み込んでいれば、LADBによるこの手法、使えてしまうのです。というか、実際手元でやったら出来ちゃったのでびっくりした訳であります…





4. ワイヤレスデバックの詳細画面を開き、「ペア設定コードによるデバイスのペア設定」をタップします。「デバイスとのペア設定」子画面が表示され、WIFIペア設定コード、並びにIPアドレスとポート、という内容が表示されます。



5. ワイヤレスデバックの詳細画面で表示されたWIFIペア設定コードを、LADB側のPairing Code欄に入力します。



6. IPアドレスとポート欄に表示されたポート番号=コロン(:)以降の数字の部分
を、LADB側のPort欄に入力します。




7. LADB側のPairing Infomation画面の右下、「OKEY」をタップします。
8. 端末の状況にもよりますが、暫く後にLADB側で、「Enter Pairing code:Succesfully paired 〜」と出た後、さらに「Success! ※¥(^o^)/※」と出力されれば、LADBの操作準備が整った状態となります。



この際、結構クラッシュする場合が「端末によってはあり得る」のと、レスポンスが大変に遅い場合が、これも「端末によってはあり得る」ので、めげずに接続をチャレンジしていただければと思います。



実際、私の手元のAQUOS Sense5Gではものすごくレスポンスが遅く、操作を受け付けるまでに3秒程度かかったのですが、AQUOS Sense4では一瞬でした。

インストールしている他のアプリケーションの影響も少し受けているのかもしれませんね。


9. 後はADBを楽しみます。 分割画面を解除して、LADBの世界をお楽しみください。




・ADBが操作できるようになったなら、MacroDroid向けに権限を付与せざるを得ない

adb shell pm grant com.arlosoft.macrodroid

android.permission.WRITE_SECURE_SETTINGS
android.permission.CHANGE_CONFIGURATION

この三行について、それぞれの行をAQUOS Sense5GのFEPであるS-Shoinの
辞書に登録して、LADBのシェルで

adb shell pm grant com.arlosoft.macrodroid android.permission.WRITE_SECURE_SETTINGS
adb shell pm grant com.arlosoft.macrodroid android.permission.CHANGE_CONFIGURATION

の二行を発行したら、レスポンスが無いものの、
しっかりコマンドが通っており
MacroDroidのADB Hackも出来ました!
うれしい!(*゚∀゚人゚∀゚*)♪





なぜ
adb shell pm grant com.arlosoft.macrodroid

android.permission.WRITE_SECURE_SETTINGS
android.permission.CHANGE_CONFIGURATION

を分けるかというと、
辞書の文字列制限で、1コマンド全て入らないのが理由です。
なので、grant、つまり権限付与の指示の部分は共通なので一つにして、
付与対象のパーミッション2種類をそれぞれ分けている、ということです。
さらに言えば、端末再起動でADBハックはもちろん外れてしまいますから、何回も行うことを想定して、辞書登録しておくと、再度同じ操作を行う際に楽ですよ、という背景があります。

ちゃんと、LADBが動作したかについては、
上記のadb権限付与のコマンドを発行後に
pwdやlsなどのコマンドを発行して、
ちゃんとLADBのシェルが応答を返してくるのを
確認すると良いでしょう。

20220814-1745追記:
LADBを起動してから画面分割しても、LADBがワイヤレスデバック側のステータスを検出できずにシェル落ちする確立が高まりますので、ばしばしシェル落ちする、という方は、Android設定画面の開発者オプションを先に起動してから、画面分割して、LADBを起動するように順番を変えると、安定すると思われます。

20230326-1804追記:

もしADBに接続したにも関わらず、
libadb.soがエラーを吐く場合には、
LADBでペアリングしたネットワークに接続したままで、Moreメニュー内のPair&Shellをオンにして再起動を試してみて頂くと、libadb.soのデバイスに対する再ペアリングが走ってワイヤレスデバック接続がなされる可能性があります。
上手くいかないこともあるので、何回かアプリ側の再立ち上げが必要かもしれません。
(バージョン2.2.1にて確認)







202401312220追記:
ADBブリッジアプリの「Shizuku」を使う方法についても書きましたので宜しければご参照ください。

【Android】【ADB Hack】処理が終わらない ~こぼれ落ちる涙のShizuku~ LADBとは違うワイヤレスデバッグADBアプリはどうだろう? - 駅前散策ブログ@かわさき HOT

(´・ω・)ノ<らいなーです。こーたーえがーみつかーらない♪もーどかしさでーいつかーらかー♪麻婆カレーのレシピ取り逃した!もーおーもどれーなーいー♪今日は会...

goo blog

 





記事は以上です。
ここまでお読みくださりありがとうございました。
引き続き、よきMacroDroidライフをお楽しみください!
この記事についてブログを書く
« よい文が浮かばないのです。 | トップ | 多少雑に扱っても懐が痛まな... »