Unity Android 開発者向けの ADB ユーティリティ集です。APK の自動インストールと、複数端末の logcat 記録を提供します。
| ユーティリティ | スクリプト | 用途 |
|---|---|---|
| Wi-Fi Auto Install | adb-wifi-autoinstall.ps1 |
Wi-Fi ADB 接続を維持しつつ、APK 更新を検知して全端末へ自動インストール |
| Multi-device Logcat Recorder | start_logcat.ps1 / stop_logcat.ps1 |
接続中の全端末から Unity タグの logcat をデバイス別ファイルにバックグラウンド記録 |
両者は相補的に使えます: APK を自動インストール → アプリ再起動 → logcat で挙動確認、というワークフローです。
- Windows(PowerShell 5.1 以上)
adbが PATH に通っていること- 対象端末の USB デバッグが有効であること
adb-wifi-autoinstall.ps1 は以下を組み合わせたユーティリティです。
- ADB 接続ウォッチドッグ: 端末が切断された場合、自動で再接続を試みます(USB 接続時は
adb tcpipで復旧を試行) - 複数端末対応: USB 接続された全 Android 端末を自動で収集し、Wi-Fi ADB のターゲットとして管理。実行中に接続された端末も動的に取り込みます
- APK 更新監視: 指定ディレクトリの最新 APK を監視し、更新があれば全ターゲットへ並列で
adb installを実行(FileSystemWatcher + ポーリングの二重検知) - 音声通知: インストール結果に応じて Windows システム音で通知(全台成功なら Asterisk、1台でも失敗なら Hand)
初回は USB 接続で各端末の IP を取得する必要があります(adb tcpip 有効化のため)。
主に XREAL 向け Unity 開発者(Wi-Fi 経由で ADB 接続を維持しつつ、Unity の Run を使わずにビルド→インストールを回したい方)を想定しています。
# バッチファイルから実行(推奨)
adb-wifi-autoinstall.bat
# PowerShell から直接実行
powershell -ExecutionPolicy Bypass -File "adb-wifi-autoinstall.ps1"
# パラメータ指定の例
powershell -ExecutionPolicy Bypass -File "adb-wifi-autoinstall.ps1" -Port 5555 -WatchDir "C:\path\to\apk_dir" -ApkFilter "*.apk" -IntervalSec 5| パラメータ | デフォルト | 説明 |
|---|---|---|
Port |
5555 | adb tcpip 用ポート |
IntervalSec |
5 | ウォッチドッグ・メインループの待機間隔(秒) |
WatchDir |
スクリプト起動ディレクトリ | APK を監視するディレクトリ |
ApkFilter |
*.apk |
監視するファイルのフィルタ |
DebounceMs |
1200 | FileSystemWatcher のデバウンス時間(ミリ秒) |
PollApkEverySec |
5 | ポーリング間隔(秒) |
- 接続状態は
接続OK: N/M 台 (last update: HH:mm:ss)の形式で同一行上書き表示 - 重要イベント(端末検出、接続失敗/復旧、APK 更新検知、インストール結果など)はタイムスタンプ付きで改行出力
- 並列インストール結果は
並列インストール結果: 成功=X / 失敗=Y / 合計=Zとして集約表示
PC に接続中の全 Android 端末(Meta Quest 等)から、デバイス別ファイルに Unity タグの logcat をバックグラウンド記録します。
- 接続中の全端末を自動検出
- 端末ごとに非表示の
cmd.exeプロセスでadb logcatを実行 - ログは
Logs\<デバイス名>_unity.logに出力 - Ctrl+C で graceful に停止し、バッファを確実にフラッシュ
- 2重起動防止機能付き
開始:
# バッチファイルから実行(推奨)
start_logcat.bat
# PowerShell から直接実行
powershell -ExecutionPolicy Bypass -File "start_logcat.ps1"停止:
実行中のターミナルで Ctrl+C を押してください。graceful に停止し、ログバッファがフラッシュされます。
Ctrl+C が使えない場合(ターミナルが応答しない等)はフォールバック用の停止スクリプトを使います:
stop_logcat.bat出力例:
Starting logcat for 2 device(s) (hidden)...
[Meta_Quest_3_vanilla] pid=56240 -> Logs\Meta_Quest_3_vanilla_unity.log
[192.168.1.100_5555] pid=58488 -> Logs\192.168.1.100_5555_unity.log
Recording. Press Ctrl+C to stop and flush.
デフォルトでは ADB シリアル番号がそのままログファイル名に使われます。分かりやすい名前を付けたい場合は、device_nicknames.txt.example をコピーして device_nicknames.txt を作成し、マッピングを記述してください。
copy device_nicknames.txt.example device_nicknames.txtフォーマット:
SERIAL=Nickname
例:
2G0YC1ZG3P01QW=Meta Quest 3 (vanilla)
192.168.1.100:5555=Meta Quest 3 (wifi)
device_nicknames.txt は .gitignore 対象のため、各開発者が自分の環境に合わせて編集します。
start_logcat.ps1がadb devicesで接続端末を列挙し、端末ごとに非表示のcmd.exeプロセスを起動してadb logcat -v threadtime -s Unity > ログファイルを実行します- 停止時は
taskkill /PID(/Fなし)で WM_CLOSE → CTRL_CLOSE_EVENT を送り、adb の CRT が stdio バッファをフラッシュしてからプロセスが終了します。これにより確実にログが書き出されます - 5秒以内に終了しない場合のみ
/Fで強制 kill します(ログが途切れる可能性あり)
- これらのスクリプトは端末の ADB インタフェースを操作します。公開環境や不特定多数が接続するネットワーク上での運用には十分注意してください
- 自動インストール機能を使う場合、誤った APK をインストールするリスクがあります。監視ディレクトリの管理は慎重に行ってください
- スクリプトを配布・実運用する前に必ずコードレビューとテストを行ってください
このリポジトリ内のファイルには、AI(生成モデル)による生成または編集支援が含まれています。最終的なレビュー、テスト、運用判断は人間の担当者が行ってください。
- バグ修正や改善提案は Issue または Pull Request で歓迎します
- ライセンスについては LICENSE を参照してください