アンドロイドのあれこれ
[PR]
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
実機テストはどうすればいいの?(実機USB接続トラブル)
エミュレータなんて遅くて使い物にならない!っていう人は端末実機でテストすることをすすめます。
Android端末とUSBでつないでアプリのテストを紹介します。開発環境はLinux(Ubuntu)ですがー
Android端末とUSBでつないでアプリのテストを紹介します。開発環境はLinux(Ubuntu)ですがー
当たり前ですが、PCがそのデバイスを認識できてからでないと何も進みません。
Windowsの場合、USB接続した時点で新しいデバイスがみつけたよーって知らせてくれます。
その後はドライバー探してインストールしておけば問題ないはず
また、端末のメーカーによってメーカーの公式サイトからドライバーのダウンロードもできます。
実機を使ってアプリ開発することについての説明は以下のURLで確認することが出来ます。
Using Hardware Devices
http://developer.android.com/intl/ja/guide/developing/device.html
Ubuntuの場合は公式ドキュメントのUsing Hardware Devicesに書かれているようにシステムに対象デバイスのセットアップが必要です。
suになって/etc/udev/rules.d/のとこに51-android.rulesファイルを作って中身は
例:SUBSYSTEM=="usb", SYSFS{idVendor}=="0bb4", MODE="0666"
追加してchmod a+rで、ファイルのパーミッションを変更します。
サポートしているUSBデバイスのコードを記入しておけば端末が認識されます。
メーカー別のコードは
http://developer.android.com/intl/ja/guide/developing/device.html のページに公開しています。
持っているメーカーをコードを変えればおk
例えば、HT-03A(またはHTC Magic) すでに忘れられている日本初のAndroid端末
SUBSYSTEM=="usb", SYSFS{idVendor}=="0bb4", MODE="0666"
Samsung Galaxy Sの場合
SUBSYSTEM=="usb", SYSFS{idVendor}=="04e8", MODE="0666"
実機一つ以上接続するなら51-android.rulesの中に次の行に同じく追加していけばいいです。
例えばHTCとSamsungの端末
SUBSYSTEM=="usb", SYSFS{idVendor}=="0bb4", MODE="0666"
SUBSYSTEM=="usb", SYSFS{idVendor}=="04e8", MODE="0666"
注意は、まずこの設定をしてから、端末の「設定」->「アプリケーション」->「開発」->「USBデバッグ」をチェックして接続するよう忘れずに
確認したいときは端末を開いてadbコマンドで
ちなみにUsing Hardware Devicesのページにない端末のメーカーはlsusbでUSBデバイスのリストを表示して確認するとこができます。
と
Bus 001 Device 038: ID 04e8:681c Samsung Electronics Co., Ltd
0bb4とか04e8が表示されています。
実機デバイスを認識できたらこれでアプリを実機でテストできます。
ですが、メーカーのコードを51-android.rulesに追加してもうまく認識できない例外もあります。たとえばNexus OneとNexus S
Nexus OneはHTC製品ですが、USB Vendor IDsは「0bb4」になっていません。
Nexus SもSamsung製品ですが、「04e8」になっていません。
そのときはlsusbで確認をしてみるとNexus OneもNexus Sも「18d1」となっています。
なぜだろう?他に例外はまだあるかどうかわかりません。
また、これまであった実機接続のトラブルは端末のプラットフォームバーションをアップデートした後
アップデートする前は端末の認識できていたがアップデートした後うまく認識できなくて
??????????? no permissionが表示されてました。
51-android.rulesの中を確認したところは内容は変わっていないし変更もしていない。
自分が解決した方法はsuでadbサーバーの再起動です。
Windowsの場合、USB接続した時点で新しいデバイスがみつけたよーって知らせてくれます。
その後はドライバー探してインストールしておけば問題ないはず
また、端末のメーカーによってメーカーの公式サイトからドライバーのダウンロードもできます。
実機を使ってアプリ開発することについての説明は以下のURLで確認することが出来ます。
Using Hardware Devices
http://developer.android.com/intl/ja/guide/developing/device.html
Ubuntuの場合は公式ドキュメントのUsing Hardware Devicesに書かれているようにシステムに対象デバイスのセットアップが必要です。
suになって/etc/udev/rules.d/のとこに51-android.rulesファイルを作って中身は
例:SUBSYSTEM=="usb", SYSFS{idVendor}=="0bb4", MODE="0666"
追加してchmod a+rで、ファイルのパーミッションを変更します。
$ cd /etc/udev/rules.d/ $ sudo vi 51-android.rules $ sudo chmod a+r 51-android.rulesSYSFS{idVendor}の部分はUSB Vendor IDs
サポートしているUSBデバイスのコードを記入しておけば端末が認識されます。
メーカー別のコードは
http://developer.android.com/intl/ja/guide/developing/device.html のページに公開しています。
持っているメーカーをコードを変えればおk
例えば、HT-03A(またはHTC Magic) すでに忘れられている日本初のAndroid端末
SUBSYSTEM=="usb", SYSFS{idVendor}=="0bb4", MODE="0666"
Samsung Galaxy Sの場合
SUBSYSTEM=="usb", SYSFS{idVendor}=="04e8", MODE="0666"
実機一つ以上接続するなら51-android.rulesの中に次の行に同じく追加していけばいいです。
例えばHTCとSamsungの端末
SUBSYSTEM=="usb", SYSFS{idVendor}=="0bb4", MODE="0666"
SUBSYSTEM=="usb", SYSFS{idVendor}=="04e8", MODE="0666"
注意は、まずこの設定をしてから、端末の「設定」->「アプリケーション」->「開発」->「USBデバッグ」をチェックして接続するよう忘れずに
確認したいときは端末を開いてadbコマンドで
$ adb devices List of devices attached emulator-5554 device 1000cd14058f device HT963LF01040 deviceデバイスの設定せずに端末を接続してadb devicesやると
$ adb devices List of devices attached emulator-5554 device ????????????? no permission
ちなみにUsing Hardware Devicesのページにない端末のメーカーはlsusbでUSBデバイスのリストを表示して確認するとこができます。
$ lsusb Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 005 Device 002: ID 04d9:1503 Holtek Semiconductor, Inc. Shortboard Lefty Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 004 Device 026: ID 045e:0745 Microsoft Corp. Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 003 Device 004: ID 0b97:7772 O2 Micro, Inc. OZ776 CCID Smartcard Reader Bus 003 Device 003: ID 0483:2016 SGS Thomson Microelectronics Fingerprint Reader Bus 003 Device 002: ID 0b97:7761 O2 Micro, Inc. Oz776 1.1 Hub Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 002 Device 014: ID 0bb4:0c02 High Tech Computer Corp. Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 038: ID 04e8:681c Samsung Electronics Co., Ltd Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hubBus 002 Device 014: ID 0bb4:0c02 High Tech Computer Corp.
と
Bus 001 Device 038: ID 04e8:681c Samsung Electronics Co., Ltd
0bb4とか04e8が表示されています。
実機デバイスを認識できたらこれでアプリを実機でテストできます。
ですが、メーカーのコードを51-android.rulesに追加してもうまく認識できない例外もあります。たとえばNexus OneとNexus S
Nexus OneはHTC製品ですが、USB Vendor IDsは「0bb4」になっていません。
Nexus SもSamsung製品ですが、「04e8」になっていません。
そのときはlsusbで確認をしてみるとNexus OneもNexus Sも「18d1」となっています。
なぜだろう?他に例外はまだあるかどうかわかりません。
また、これまであった実機接続のトラブルは端末のプラットフォームバーションをアップデートした後
アップデートする前は端末の認識できていたがアップデートした後うまく認識できなくて
??????????? no permissionが表示されてました。
51-android.rulesの中を確認したところは内容は変わっていないし変更もしていない。
自分が解決した方法はsuでadbサーバーの再起動です。
# adb kill-server # adb start-server
COMMENT