今年から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ケーブルを買うのが無難ですね。
大変参考になりました。
返信削除ありがとうございます!
詳しく教えてくれてありがとうございます。
返信削除Androidスマホ上でUSBデバッグを有効にする方法:http://goo.gl/UEfbsh