Tuesday, March 19, 2024

Android開発者必見!ADBとADB Shellを徹底解説する完全ガイド

ADB (Android Debug Bridge) は、開発用のPCとAndroidデバイスを接続し、通信を可能にする多目的コマンドラインツールです。ADBを使えば、アプリのインストールやデバッグ、ファイルの転送、デバイスのログ取得など、開発に不可欠な様々な操作を効率的に実行できます。その中でも特に強力なのがADB Shellです。これはデバイスの基盤となっているLinuxのコマンドライン環境へ直接アクセスする機能で、ファイルシステムの操作、プロセスの管理、システム設定の変更といった、より低レベルな作業を可能にします。

Androidアプリ開発者にとって、ADBとADB Shellを使いこなすことは、もはや推奨スキルではなく必須スキルと言えるでしょう。本記事では、これらのツールの導入方法から、日常的に使う基本コマンド、さらにはデバッグや高度な活用法までを網羅的に解説し、あなたの開発効率を飛躍的に向上させるお手伝いをします。

ADBのセットアップ:インストールとデバイスの準備

ADBを使い始めるには、PCとAndroidデバイスの両方で準備が必要です。以下の手順に従ってセットアップを完了させましょう。

ステップ1:AndroidデバイスでUSBデバッグを有効にする

これは最も重要な最初のステップです。ADBがデバイスと通信するには、「USBデバッグ」が有効になっている必要があります。

  1. デバイスの「設定」から「デバイス情報」(または「端末情報」)を開きます。
  2. 「ビルド番号」を7回連続でタップします。「これでデベロッパーになりました!」というメッセージが表示されます。
  3. 設定メニューに戻ると、「開発者向けオプション」という新しい項目が表示されています(「システム」内にある場合もあります)。
  4. 「開発者向けオプション」を開き、「USBデバッグ」のスイッチをオンにします。

ステップ2:PCにADBをインストールする

ADBはAndroid SDK Platform-Toolsパッケージに含まれています。Android Studio全体をインストールする必要はありません。

  1. 公式のAndroid SDK Platform-Toolsダウンロードページにアクセスします。
  2. お使いのOS(Windows, macOS, Linux)用のパッケージをダウンロードします。
  3. ダウンロードしたZIPファイルを、わかりやすい場所(例:Windowsなら C:\platform-tools)に展開します。
  4. どのターミナルからでもコマンドを実行できるよう、展開したフォルダへのパスをシステムの環境変数「PATH」に追加します。

ステップ3:インストールと接続の確認

すべての準備が整ったら、ADBが正しく動作するか確認します。

  1. AndroidデバイスをUSBケーブルでPCに接続します。デバイスの画面に「USBデバッグを許可しますか?」というダイアログが表示されたら、許可してください。
  2. PCでコマンドプロンプト(Windows)またはターミナル(macOS/Linux)を開きます。
  3. adb devices と入力してEnterキーを押します。
  4. デバイスのシリアル番号の横に「device」と表示されれば、正常に接続されています。「unauthorized」と表示される場合は、デバイスの画面でデバッグ許可のダイアログを確認してください。

開発者なら覚えておきたい必須ADBコマンド

ADBのセットアップが完了したら、いよいよ強力なコマンド群を使ってみましょう。ここでは日常的に使用する基本的なコマンドを紹介します。

接続デバイスの一覧表示
デバイスが正しく認識されているかを確認するための最初のコマンドです。 adb devices

アプリケーションのインストール
APKファイルをデバイスにインストールします。 adb install <APKファイルのパス>

アプリケーションのアンインストール
パッケージ名(例: com.example.myapp)を指定して、アプリをデバイスから削除します。 adb uninstall <パッケージ名>

デバイスへのファイル転送
PC上のファイルやディレクトリをデバイスにコピーします。 adb push <ローカルパス> <リモートパス>

デバイスからのファイル取得
デバイス上のファイルやディレクトリをPCにコピーします。 adb pull <リモートパス> <ローカルパス>

デバイスシェルへのアクセス
デバイス上で対話的なLinuxコマンドシェルを起動します。 adb shell

デバイスログの表示
デバイスのログ(Logcat)をリアルタイムで表示します。デバッグには不可欠です。 adb logcat

デバイスの再起動
接続されているデバイスを再起動します。adb reboot bootloaderでブートローダー、adb reboot recoveryでリカバリーモードで再起動することも可能です。 adb reboot

ADB Shellの基本コマンド

adb shell <コマンド> の形式でPCのターミナルから直接シェルコマンドを実行したり、adb shellで対話モードに入ってからコマンドを実行したりできます。ここでは基本的なシェルコマンドを紹介します。

ファイルとディレクトリの一覧表示
Linuxのlsコマンドと同様に、デバイスのファイルシステムを探索します。 adb shell ls /sdcard/

実行中プロセスの一覧表示
デバイスで現在実行されているすべてのプロセスを表示します。 adb shell ps

システムサービス情報のダンプ
システムサービスに関する膨大な情報を表示します。adb shell dumpsys activityのようにサービスを指定すると、特定の情報を得られます。 adb shell dumpsys

アプリのアクティビティ起動
アクティビティマネージャ(am)を使い、特定のアプリコンポーネントを起動します。 adb shell am start -n <パッケージ名>/<アクティビティ名>

システムプロパティの取得
Androidのバージョンや画面密度など、デバイスのシステムプロパティを表示します。 adb shell getprop

システムプロパティの設定
システムプロパティを変更します。多くの場合、root権限が必要です。 adb shell setprop <キー> <値>

テキスト入力のシミュレート
現在フォーカスが当たっているテキストフィールドに、指定した文字列を入力します。 adb shell input text <入力したい文字列>

ADBを活用したデバッグ手法

ADBは、アプリの問題を特定し修正するための最も重要なツールです。デバッグ作業で役立つ主要なコマンドを見ていきましょう。

リアルタイムでのログ監視
logcatはデバッグの最高の相棒です。adb logcat YourAppTag:D *:Sのようにタグでフィルタリングすれば、自分のアプリのログだけを追跡できます。 adb logcat

バグレポートの完全生成
デバイスのログ、スタックトレース、その他の診断情報を網羅した包括的なレポートを生成します。複雑なクラッシュの分析に最適です。 adb bugreport

Javaデバッガ接続の確認
デバッグ可能なすべてのプロセスのJDWP (Java Debug Wire Protocol) IDを一覧表示します。Android Studioなどのデバッガをアタッチする際に役立ちます。 adb jdwp

アプリケーションの強制停止
アプリのプロセスを即座に終了させます。アプリがコールドスタートからどのように動作するかをテストするのに便利です。 adb shell am force-stop <パッケージ名>

ADB Shellによるパフォーマンスデバッグ

ADB Shellは、メモリリークや高いCPU使用率といったパフォーマンスのボトルネックを診断するための強力なユーティリティを提供します。

アプリの状態とパフォーマンス確認
dumpsysmeminfoのような特定のサービスと組み合わせて使うことで、アプリの詳細なメモリ使用量を明らかにできます。 adb shell dumpsys meminfo <パッケージ名>

CPU使用率の監視
topコマンドは、CPU使用率の高い順にプロセスをリアルタイムで表示し、CPU負荷の高い処理を特定するのに役立ちます。 adb shell top

システムコールのトレース
straceユーティリティは、プロセスによって行われたシステムコールを傍受し、記録します。これはアプリの低レベルな振る舞いを理解するための高度なテクニックです。 adb shell strace -p <プロセスID>

ADBとADB Shellの高度な活用法

基本をマスターしたら、これらの高度なコマンドを探求して、ワークフローをさらに効率化しましょう。

ポートフォワーディング
PCの特定のポートへのソケット接続を、デバイスのポートに転送します。デバイス上のWebViewやネットワークサービスをPCのブラウザからデバッグする際に便利です。 adb forward <PC側ポート> <デバイス側ポート>

アプリ権限でのコマンド実行
run-asコマンドを使うと、デバッグ可能なアプリと同じ権限でシェルコマンドを実行できます。これにより、root化せずともアプリのプライベートなデータディレクトリ(/data/data/<パッケージ名>)にアクセスできます。 adb shell run-as <パッケージ名> <コマンド>

デバイス画面の録画
デバイスの画面操作を動画として録画します。デモの作成、バグの再現、アニメーションの分析に最適です。 adb shell screenrecord /sdcard/demo.mp4

アプリのストレステスト
Monkeyツールは、ランダムなクリック、タッチ、ジェスチャーといった擬似的なユーザーイベントを大量に発生させます。アプリの安定性をテストし、稀にしか発生しないクラッシュを発見するための優れた方法です。 adb shell monkey -p <パッケージ名> -v 1000

デバイスデータのバックアップと復元
デバイスのデータやアプリを丸ごとPC上のファイルにバックアップします。後でadb restoreコマンドで復元できます。 adb backup -apk -all -f backup.ab

本記事では、ADBとADB Shellの基本的な機能から応用的なコマンドまでを解説しました。これらのツールを日々のワークフローに組み込むことで、Androidアプリの開発、テスト、デバッグの効率を飛躍的に向上させることができるでしょう。ぜひここで紹介したコマンドを実際に試し、その強力な機能を実感してください。


0 개의 댓글:

Post a Comment