Android アプリを作成したら、ユーザーにアプリをリリースする前に必ず実機でテストを実施しましょう。このページでは、実機上でデバッグやテストを実施するための開発環境と Android 対応端末のセットアップ方法について説明します。
アプリの実行、デバッグ、テストを実施する環境として、すべての Android 対応端末を利用できます。SDK に含まれるツールを使用すると、コンパイルするたびに簡単に実機にアプリをインストールし、実行することが可能です。アプリは Android Studio から直接端末へインストールするか、ADB を使用してコマンドラインでインストールできます。実機をお持ちでない方は、自身の地域のサービス プロバイダに利用可能な Android 対応端末をご確認ください。
SIM フリーのスマートフォンが必要な場合は、Nexus スマートフォンの使用をご検討ください。Nexus スマートフォンは Google Play ストアで購入いただけます。
注: 実機で開発する場合も Android エミュレータを使用して、実機とは異なる設定でアプリのテストを実施しましょう。エミュレータでは加速度計など、一部テストができない端末機能もありますが、さまざまな Android プラットフォームのバージョンで、画面のサイズや向きなどを変えてアプリが正常に機能するか確認することができます。
端末開発者向けオプションを有効にする
Android 対応端末には数々の開発者向けオプションがあり、それらを利用するとスマートフォンにアクセスして以下のような処理を行うことができます。
- USB 経由でのデバッグを可能にします。
- 端末のバグレポートをすばやく取得します。
- CPU 使用状況を画面に表示します。
- レイアウト境界などのデバッグ情報を画面に表示し、GPU ビューやハードウェア レイヤーなどの情報を更新します。
- その他、試験的にアプリに負荷をかけたり、デバッグ オプションを有効にしたりするための機能が豊富にあります。
これらの設定をするには、システムの [Settings] から開発者向けオプションを開きます。Android 4.2 以降のバージョンでは、デフォルトで [Developer options] の画面は表示されません。使用できるようにするには、[Settings] > [About phone] で [Build number] を 7 回タップします。設定画面に戻ると、下に [Developer options] が表示されます。
開発用に端末をセットアップする
Android 対応端末でも、エミュレータ同様に Android アプリを開発してデバッグできます。以下に必要な準備について説明します。
- マニフェスト ファイルか build.gradle ファイルでアプリがデバッグ可能になっていることを確認します。
ビルドファイルで、debug ビルドタイプの debuggable プロパティが true に設定されていることを確認します。このビルドタイプ プロパティはマニフェスト設定をオーバーライドします。
android { buildTypes { debug { debuggable true }AndroidManifest.xmlファイルで<application>要素にandroid:debuggable="true"を追加します。注: 手動でマニフェスト ファイル内でデバッグを有効にした場合、リリースビルドでは必ず無効にしてください(通常、公開アプリはデバッグできないようにします)。
- [Settings] > [Developer options] に移動し、端末の [USB debugging] を有効にします。
注: Android 4.2 以降のバージョンでは、[Developer options] はデフォルトで非表示になっています。使用できるようにするには、[Settings] > [About phone] で [Build number] を 7 回タップします。設定画面に戻ると、[Developer options] が表示されます。
- 端末を検出するようシステムをセットアップします。
- Windows で開発している場合は adb 用の USB ドライバのインストールが必要です。インストール ガイドと OEM ドライバのリンクについては、OEM USB ドライバをご覧ください。
- Mac OS X で開発している場合は問題なく動作するので、この手順はスキップしてください。
- Ubuntu Linux で開発している場合は、
udevルールファイルを追加して、開発で使用する各種端末の USB 設定を含める必要があります。このルールファイルにおいて、各端末メーカーはATTR{idVendor}プロパティで指定された固有のベンダー ID で識別されます。ベンダー ID のリストについては、以下の USB ベンダー ID を参照してください。Ubuntu Linux での端末検出のセットアップ手順は以下のとおりです。- ルートでログインして次のファイルを作成します:
/etc/udev/rules.d/51-android.rules次のフォーマットを利用してファイルに各ベンダーを追加します。
SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", MODE="0666", GROUP="plugdev"
この例では HTC のベンダー ID を使用しています。MODEの割り当てには読み取り / 書き込みパーミッションを指定し、GROUPではデバイスノードを持つ Unix グループを定義します。注: ルール構文は環境によって多少違いがありますので、必要に応じて自身のシステムの
udevドキュメントを参照してください。ルール構文の概要については、udev ルールの記述ガイドをご覧ください。 - 以下を実行します。
chmod a+r /etc/udev/rules.d/51-android.rules
- ルートでログインして次のファイルを作成します:
注: Android 4.2.2 以降の端末をコンピュータに接続するとダイアログが表示され、コンピュータ経由のデバッグを許可するための RSA 鍵を受け入れるかどうか問われます。これはユーザーの端末のセキュリティを保護するための仕組みです。端末のロックを解除してこのダイアログで許可しない限り、USB デバッグや他の adb コマンドは実行できません。よって、Android 4.2.2 以上を搭載した端末でデバッグをするためには、バージョン 1.0.31 の adb(SDK Platform-tools r16.0.1 以降で利用可能)を使用する必要があります。
USB 経由で接続している場合は、SDK の platform-tools/ ディレクトリから直接 adb devices を実行すると、端末が接続されているか確認できます。接続されていれば、「device」として端末名が表示されます。
Android Studio を使用している場合は、通常通りにアプリの実行やデバックを行います。[Device Chooser] ダイアログに、利用可能なエミュレータと接続済みの実機のリストが表示されるので、その中からアプリをインストールして実行したい端末を選択します。
Android Debug Bridge(abd)を使用している場合は、-d フラグをつけてコマンドを発行すると、接続済みの端末を対象にできます。
USB ベンダー ID
以下の表は、Linux に USB デバイスのサポートを追加する上で必要なベンダー ID の一覧です。上述のように、USB ベンダー ID はルールファイルで ATTR{idVendor} プロパティに指定する値です。
| 会社名 | USB ベンダー ID |
|---|---|
| Acer | 0502 |
| ASUS | 0b05 |
| Dell | 413c |
| Foxconn | 0489 |
| Fujitsu | 04c5 |
| Fujitsu Toshiba | 04c5 |
| Garmin-Asus | 091e |
18d1 |
|
| Haier | 201E |
| Hisense | 109b |
| HP | 03f0 |
| HTC | 0bb4 |
| Huawei | 12d1 |
| Intel | 8087 |
| K-Touch | 24e3 |
| KT Tech | 2116 |
| Kyocera | 0482 |
| Lenovo | 17ef |
| LG | 1004 |
| Motorola | 22b8 |
| MTK | 0e8d |
| NEC | 0409 |
| Nook | 2080 |
| Nvidia | 0955 |
| OTGV | 2257 |
| Pantech | 10a9 |
| Pegatron | 1d4d |
| Philips | 0471 |
| PMC-Sierra | 04da |
| Qualcomm | 05c6 |
| SK Telesys | 1f53 |
| Samsung | 04e8 |
| Sharp | 04dd |
| Sony | 054c |
| Sony Ericsson | 0fce |
| Sony Mobile Communications | 0fce |
| Teleepoch | 2340 |
| Toshiba | 0930 |
| ZTE | 19d2 |