Engineer's Way

主にソフトウェア関連について色々書くブログです。

AndroidStudio(Mac)でデバイスが認識されない時の対策

 

現象

AndroidStudioをインストールして、USBでPCとスマホを繋いでから
ビルドしようとしたところ、デバイスが認識されなかった。

f:id:matsnow:20161125011626p:plain

対策

一般的にはadbコマンドを使って再起動すれば良いらしい。 手順は以下の通り。

  1. まず、ターミナルからadbを使えるようにする。 qiita.com
  2. 次に、サービスの再起動をする。
    1. adb kill-server
    2. adb devices

上で解決しない場合

ただし、今回は上のコマンドを実行しても、e00002c5というエラーが出て、
相変わらず認識されなかった。

% adb kill-server
% adb devices
List of devices attached
* daemon not running. starting it now on port 5037 *
adb E 91814 4487433 usb_osx.cpp:327] Could not open interface: e00002c5
adb E 91814 4487433 usb_osx.cpp:289] Could not find device interface
* daemon started successfully *

調べた限りでは、EasyTetherの導入時にインストールしたドライバが競合を引き起こしていたことが原因らしい。

stackoverflow.com

解決法

とりあえずUSBでPCとスマホを繋ぎっぱなしにした状態で、スマホを再起動すれば認識された。 ただし、その後、USBを抜き差しすると、また認識されなくなる…。
なかなかに面倒臭い。

(2016/12/25追記)
一旦EasyTetherを停止させてから、改めてadbを再起動すると認識されることが判明。
(コメントくださった方ありがとうございます!)
以下のどちらかの手順で、AndroidStudioに認識させることが可能なはず。

EasyTetherUSBEthernet.kextがある場合

認識させる時
% sudo kextunload /System/Library/Extensions/EasyTetherUSBEthernet.kext
% adb kill-server
% adb start-server
EasyTetherを再開する時
% sudo kextload /System/Library/Extensions/EasyTetherUSBEthernet.kext

EasyTetherUSBEthernet.kextがない場合 (バージョンの問題?)

認識させる時
% ps -ef | grep teth       
    0 19300     1   0  8:08PM ??         0:00.02 sudo /usr/local/bin/easytether-usb 0x10000e114  // <= これを停止させる
   -2 19301 19300   0  8:08PM ??         0:01.58 /usr/local/bin/easytether-usb 0x10000e114
  501 19519 17444   0  8:11PM ttys002    0:00.00 grep teth
% sudo kill -9 19300
% adb kill-server
% adb start-server
EasyTetherを再開する時
% adb kill-server
% sudo /usr/local/bin/easytether-usb 0x10000e114
Ctrl + Zで一時停止 (-nでバックグラウンド起動らしいが、ならなかった)
% bg