2015年1月26日月曜日

Android Windowsマシンに実機をUSB接続して認識させる

こんにちは。野田(scarviz)です。
今年からGDG神戸のCo-Managerをさせて頂くことになりました。
よろしくお願い致します。

来週の2/7(土)にGDG京都で「Android 基本ハンズオン(http://www.kyoto-gtug.org/android-basic-handson201502)」があります。
僕も講師メンバとして参加します。
Android開発環境がまだの人から対象としてるので、今からAndroidはじめようと思っている方は、良かったら参加してくださいね!


それに先駆け、今回はAndroid開発であるあるの、Windowsマシンに実機(Android端末)をUSB接続したら、「認識されない!」ってなってしまう対策方法を紹介します。

今回の環境は以下になります。
Windowsマシン:
Windows8.1

実機(端末):
Nexsus7 2013 (Android4.3)

開発環境:
Android Studio


なお端末は、開発者向けオプションが表示出来ていて、USBデバッグが有効になっている状態にしておいてください。



■どういう現象?
Windowsマシンに初めて接続する端末の場合、USB接続をすると、「ドライバのインストール」というダイアログか、ポップアップメッセージが表示されます。
そのメッセージが表示されないか、「ドライバのインストールに失敗しました」というようなメッセージが表示されてしまうことがあります。

まずは本当に認識されていないか確認します。
スタートボタン(左下にあるWindowsマーク)を右クリックし、「デバイスマネージャ」を選択してください。




もし、「他のデバイス」のところに、端末の名前がついてあるアイコンに、三角の!マークが表示されていたら、ドライバのインストールに失敗していて、認識されていない状態になっています。




端末がどれか分からない場合はUSBを一旦抜いて、一覧が更新されたら(一瞬消えるような動きをします)、もう一度USB接続してみてください。
「他のデバイス」にUSBの抜き差しで、消えたり表示されたりするものが、その端末になります。

全く変わらない場合は、「AndroidPhone」とか他のところに出てきていると思います。
この場合は、認識されているので、以降の手順は不要です。

最後の 5. USBデバッグを許可する を確認してください。


■対策の概要
Windowsマシンに端末を認識させる方法は以下の4つがあります。

1. ぐぐる
2. Google USB Driverを使用する
3. android_winusb.infを編集する
4. マシン上のデバイスドライバ一覧から適切なものを使用する

1番でダメだったら2番という感じに、上から順番に試していくようになります。
では、順番に見ていきましょう。


■1. ぐぐる
端末名と「Windows 認識しない」とかでぐぐると、先人の知恵を拝借出来たりします。
マイナーな端末や最新端末じゃなければ、結構見つかります。
一番手っ取り早いですね。

ぐぐっても見つからなければ、2番以降を試して、自力で解決しましょう。


■2. Google USB Driverを使用する
まずはUSBドライバがマシンに入っているか確認しましょう。
USBドライバはSDKマネージャから確認したり、取ってきたり出来ます。
SDKマネージャを起動しましょう。

SDKマネージャは、Android Studioを起動した時に「Welcome to Android Studio」の画面なら、
Configure > SDK Manager
を選択します。






もし実装中のプロジェクトが表示されたら、上部のSDKマネージャのアイコンをクリックします。





SDKマネージャが起動したら、下部の Extras > Google USB Driver のStatusを確認してください。
もし、「Installed」になっていればOKです。



「Not installed」になっている場合は、チェックボックスにチェックを入れ、Install packagesボタンを押下し、
右下の「Accept License」をクリックし、Installボタンを押下してください。
※下図は例のため、Packagesの名前がGoogle Web Driverになっています。Google USB Driverが正しいです。




また、SDKマネージャの上部にあるSDK Pathを覚えておくか、メモしておいてください。
この後の作業で参照します。




デバイスマネージャを開き、認識されていない端末名を右クリックし、「ドライバー ソフトウェアの更新」を選択します。




「コンピューターを参照してドライバー ソフトウェアを検索します」をクリックします。




「参照」ボタンを押し、先ほど控えておいたSDK Pathの場所まで移動し、
sdk > extras > google > usb_driver
を選択してOKボタンを押下します。





次へボタンを押下します。




「ドライバー ソフトウェアが正常に更新されました。」と出たらOKですが、下図のように「インストールできませんでした」のようなメッセージが出たら、3番目の方法に行きましょう。




■3. android_winusb.infを編集する
先ほどの
sdk > extras > google > usb_driver
の下にはandroid_winusb.infというファイルがあります。
このファイルに端末情報を追加すると、認識してくれることがあります。

まずは端末情報として、VID(Vendor ID)とPID(Product ID)を調べます。
デバイスマネージャを開き、認識されていない端末名を右クリックし、「プロパティ」を選択してください。



「詳細」タブをクリックし、プロパティのリストから「ハードウェアID」を選択します。




値のところに、
「USB\VID_18D1&PID_D002」
と書いてありますね。
これはNexus7(2013)のVIDとPIDになります。端末によって値は変わります。
このVID_18D1の部分が「VIDが18D1」、PID_D002が「PIDがD002」という意味です。
この文字列をそのまま使うので、各自の値欄の文字列をコピーしておいてください。
なお、「&REV_0228」は不要です。

sdk > extras > google > usb_driver
の下にあるandroid_winusb.infファイルをメモ帳などで開いてください。



「[Google.NTx86]」と書いてある下にある、「;Google Nexus One」を含めた三行をコピーしてください。




「[Google.NTx86]」の一番下、「[Google.NTamd64]」の上に張り付けて、次のように編集してください。

一行目の「;」はコメントアウト(何も処理されない、メモ書きとして使用される)部分なので、分かりやすいように端末名を書くのが良いです。
二行目の「%SingleAdbInterface%        = USB_Install, 」に続いて、先ほどのVID、PIDの文字列を書きます。
三行目の「%CompositeAdbInterface%     = USB_Install, 」に続いて、先ほどのVID、PIDの文字列を書きます。



例としてNexus7(2013)の場合、次のようになります。(上図)

;Google Nexus7(2013)
%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_D002
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_D002&MI_01


次に、編集したものをコピーし、「[Google.NTamd64]」の一番下、「[USB_Install]」の上に張り付けて、保存してください。




デバイスマネージャを開き、
認識されていない端末名を右クリック > ドライバー ソフトウェアの更新 > コンピューターを参照してドライバー ソフトウェアを検索します
を選択し、「次の場所でドライバー ソフトウェアを検索します」のテキストボックスの中に、
sdk > extras > google > usb_driver
のパスが入っていることを確認し、次へボタンを押下します。




今度はどうでしょうか?正常に更新されましたか?
もし次の図のように「デバイスのドライバー ソフトウェアのインストールに関する問題が発生しました。」
と出た場合は、4番に進みましょう。





■4. マシン上のデバイスドライバ一覧から適切なものを使用する
まず、デバイスマネージャを開き、
認識されていない端末名を右クリック > ドライバー ソフトウェアの更新 > コンピューターを参照してドライバー ソフトウェアを検索します
を選択します。
「コンピューター上のデバイス ドライバーの一覧から選択します」を押下してください。



一覧上の「Android Phone」を選択し、次へボタンを押下します。




一覧の「Android Composite ADB Interface」を選択し、次へボタンを押下します。




警告が出たら、「はい」を押して続けてください。




今度こそ、次のように正常に更新されましたか?




もしこれでもダメな場合は、もっと別の原因があるかもしれません。
頑張って探しましょう。
(「■6. その他の原因について」参照)


■5. USBデバッグを許可する
もし正常に更新された(認識された)場合は、Windowsマシンと端末とのUSBデバッグを許可する必要があります。
AndroidStudioを起動し、適当なプロジェクトを開いてください。



すると、端末側で下図のようなダイアログが表示されたと思います。
これは最初だけ表示されるので、既に以前表示されて許可している場合は、表示しないと思います。
その場合は、以降の手順は不要です。



チェックボックスにチェックを入れ、OKボタンを押してください。
AndroidStudioのDevicesのリストに、端末名が表示されたと思います。



デバッグ実行(上部の緑色の三角アイコンを押下)すると、「Choose Device」というダイアログが表示され、一覧に端末名が表示されていると思います。



表示されていなかったり、Status欄がOnlineでない場合は、まだ認識されていない状態です。
今までの手順で問題なかった場合は、別の原因があるかもしれません。
頑張って探しましょう。
(「■6. その他の原因について」参照)



ということで、なかなかすんなりいかなかったりするんですが、これらのパターンを試してうまく認識されるようになれば幸いです。



2015/01/27 追記
■6. その他の原因について
この記事書いたら、あるあるだけあって、「こんな原因もあるよ!」って教えてもらったので、追記します。

・USBケーブルが断線してる、または接触不良
 USBケーブルを変えるとすんなりいくことってありますね。

・USBケーブルが電源専用
 USBケーブルも種類があって、電源のみの配線になってるやつがあります。
 端末についてきてるUSBケーブルは大丈夫です。
 最近は100均でも見ない気がしますが、「転送」という言葉が書いてあるUSBケーブルを買うのが無難ですね。

2 件のコメント:

  1. 大変参考になりました。
    ありがとうございます!

    返信削除
  2. 詳しく教えてくれてありがとうございます。
    Androidスマホ上でUSBデバッグを有効にする方法:http://goo.gl/UEfbsh

    返信削除