ADB で接続端末を自動検出し、メーカー・機種を判別して初期化方式を自動で切り替えます。並列処理中に1台が失敗しても、他の端末は止まりません。
下の画像はツールの「シミュレーションモード」(仮想端末10台)で実際に動かして撮影したものです。エラーになる端末もわざと混ぜて、1台の失敗が他に影響しないことを確認しています。
募集文の「希望する機能」を1つずつ試作版に落とし込んでいます。
| ご希望の機能 | 試作版 | 実装内容 |
|---|---|---|
| ADB接続端末の自動検出 | 実装済 | 2秒ごとに adb devices -l を確認。抜き差し・「USBデバッグ未許可」状態も一覧に反映 |
| 複数端末の同時管理 | 実装済 | 接続台数・選択台数・処理中・完了・要確認・エラーを上部タイルで常時表示(「接続中:10台」など) |
| メーカー/機種名/シリアル等の取得 | 実装済 | getprop からメーカー・型番・Androidバージョン、dumpsys battery から電池残量。販売名はメーカーごとに格納場所が違うため複数プロパティを順に参照(例:OPPOは ro.vendor.oplus.market.name) |
| 対象端末を選択して初期化/一括実行 | 実装済 | チェックボックスで選択 → 「初期化」と入力して実行(誤操作防止)。同時実行数は1〜32台で指定 |
| 実行状況・成功・失敗の表示 | 実装済 | 端末ごとに 待機→処理中(どの手順か)→ 完了/要確認/エラー を色分け。エラーは現場で直せる日本語メッセージに変換 |
| ログ保存 | 実装済 | logs\日時\ に端末別ログ(送ったコマンドと応答をすべて記録)+ Excelで開ける summary.csv |
| 失敗時に他端末を止めない | 実装済 | 端末ごとに独立したタスクで処理し、例外もその端末内で処理。画面のとおり3台エラーでも残りは完了 |
| 対応機種を追加しやすい構成 | 実装済 | 機種判定と初期化方式を profiles.json に外出し。新機種はJSONに1ブロック追加するだけ(再コンパイル不要) |
| 機種を自動判別して処理を分ける | 実装済 | メーカー・ブランド・型番(正規表現)とAndroidバージョンでプロファイルを自動選択 |
| 実機での機種別調整 | 正式版で | ヘルパーアプリ(ソース同梱)のAPK化と、御社端末での動作確認・文言調整は正式ご依頼後に行います |
am broadcast で初期化を送っても、権限不足で無視されます)。そのため本ツールでは、下の3方式をプロファイルで機種ごとに選べるようにしています。画面のない小さなアプリをadbで入れ、Android標準の端末管理APIで初期化します。全自動・メーカー差が少ない方式です。
wipeDevice、それ以前は wipeDataアプリを入れたくない機種向け。画面の文言を読み取り、設定 →「リセット」→「すべてのデータを消去」を自動でタップします。
古い機種などA・Bが使えない場合の予備。リカバリーモードで再起動し、最後の「Wipe data」だけ端末ボタンで操作します。
想定端末ごとにプロファイルを用意しています。どれにも当てはまらない端末は「汎用」プロファイルで処理します。
開発者オプションの「USB経由でインストール」「USBデバッグ(セキュリティ設定)」がOFFだとアプリ導入や画面操作が拒否されます。ツール側でこのエラーを検知し、対処方法を表示します(画面のNo.2)。
販売名(例:Reno11 A)は専用プロパティから取得。開発者オプション「権限の監視を無効化」をONにしておくと、インストール時の確認で止まりません。
標準Androidに近い構成のため方式Aで処理。型番がそのまま機種名(moto g64 5G など)として表示されます。
メーカー名の表記揺れ(FCNT/FUJITSU)を両方マッチ。方式Aで処理。
方式Aで処理。電池残量が設定値(初期値20%)未満の端末は初期化せずエラー表示(画面のNo.8)。
Android 7.0以降は方式A、6.0以前は方式Cへ自動で振り分け。Pixelは方式Bの設定例として用意。
Windows標準の .NET Framework 4.8 で動くため、ランタイムの追加インストールは不要です。exeとadbを同じフォルダに置けば使えます。
// profiles.json(抜粋)— 新しい機種はここに1ブロック追加するだけ { "id": "xiaomi", "name": "Xiaomi / Redmi / POCO", "manufacturer": "^Xiaomi$", // 正規表現でマッチ "minSdk": 24, // Android 7.0 以降 "method": "device-admin", // 方式A / ui-automation / recovery "notes": [ "開発者オプション「USB経由でインストール」をON" ] }
データを消すツールなので、「間違って消さない」「失敗しても原因がわかる」ことを優先しています。