React-Native、Android、Genymotion:ADBサーバーがACKしなかった


168

Macでは、React-Native、Android、Genymotionを使用しています。実行するreact-native run-androidと、起動操作の最後に次の行が表示されます。

...
04:54:40 E/adb: error: could not install *smartsocket* listener: Address already in use
04:54:40 E/adb: ADB server didn't ACK
04:54:40 E/ddms: '/Users/paulbrie/Library/Android/sdk/platform-tools/adb,start-server' failed -- run manually if necessary
04:54:40 E/adb: * failed to start daemon *
04:54:40 E/adb: error: cannot connect to daemon
:app:installDebug FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:installDebug'.
> com.android.builder.testing.api.DeviceException: Timeout getting device list.
...

ただし、adb devicesこれを返します:

List of devices attached
192.168.59.101:5555 device

これまでのところ、エミュレータでアプリを実行するためのソリューションは見つかりませんでした。誰かが同じ問題に遭遇しましたか?

ありがとう、ポール


このエラーは、実行中のGenymotionに関係なく発生する可能性があります。
IgorGanapolsky 2017

回答:


319

さらに調査した結果、Genymotionはデフォルトで独自のadbを使用することに気付きました。

ここに画像の説明を入力してください

私はメインのadb(react-nativeで使用されるものと同じ)に切り替え、問題を解決しました。Genymotionのadbが最初に起動されたため、Address already in useエラーメッセージが表示されたと思い ます。


4
これを投稿していただきありがとうございます。心臓発作を起こしそうになったので、昨夜Androidスタジオ2.1をプレビュー3にアップデートしたところ、genymotionが接続できなくなりました。これはそれを解決するのに役立ちました。
Simon、

7
私はこの解決策を試しましたが、それでも同じエラーが発生しました。代替ソリューションはありますか?
カルクラビア2016年

1
@ user2254679このスレッドもチェックしましたか?stackoverflow.com/questions/5703550/...
ポール・

@Paul提供しているパスについて詳しく説明していただけますか?反応ネイティブによって使用されるこのadbはどこにありますか?Android SDKのパスを提供しようとしていますが、機能しません。英語が一番いいです。
K Pal

@KPal、パスは独自のセットアップに固有です。私の場合、それは当時のMacのAndroidインストールからの標準パスでした:/Users/$yourName/Library/Android/sdk。Androidをインストールした場合は、Androidのバージョン/プラットフォームを指定してパスを検索する必要があります。
Paul

45

私はgenymotionを使用していますが、Paulのソリューションだけではエラーを修正できませんでした(Macの場合)。

そうしなければならなかった:

SDKマネージャーを介してAndroid SDKを最新バージョン(24.4.1)に更新する

タイプandroidのコマンドラインで

SDKマネージャで、最新のSDKツールを見つけてインストールします。

インストールすると、SDKパスは以下のように新しいSDKの場所を更新します。

ここに画像の説明を入力してください

次に、$ ANDROID_HOMEを更新して新しいSDKを使用します

export ANDROID_HOME=/usr/local/Cellar/android-sdk/24.4.1_1

export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools

パスを表示して追加されたことを確認します echo $PATH

次に、genymotionで@Paulが上記のように言って、genymotion ADBに同じSDKを使用するように指示します

ここに画像の説明を入力してください


Ubuntu 16.04で動作します。何らかの理由$ANDROID_HOME/toolsで、クラスパスにディレクトリは必要ないだろうと思いました。adbに接続するには、追加する必要があります。
Orar 2018

10

システム: Windows 10

私の問題:カスタムSDKを指すようにGenymotionを設定しても何の影響もありませんでした。私はまだ受け取りました:

Androidでプロジェクトを開始できませんでした:smartsocketリスナーをインストールできませんでした:127.0.0.1:5037にバインドできません:通常、各ソケットアドレス(プロトコル/ネットワークアドレス/ポート)の使用は1つだけ許可されています。(10048)ADBサーバーからokを読み取れません*デーモンの開始に失敗しました*エラー:デーモンに接続できません

私が発見したのは、システム全体で使用されているADBバージョンに違いがあることでした。以下は、それらを見つけるために使用したコマンドです。

where /r C:\ adb.exe

これは結果をもたらしました:

C:\Program Files\Expo XDE\resources\app\node_modules\xdl\binaries\windows\adb\adb.exe
C:\Program Files\Genymobile\Genymotion\tools\adb.exe
C:\Users\kyle\AppData\Local\Android\Sdk\platform-tools\adb.exe
C:\Users\kyle\AppData\Local\Android\Sdk\platform-tools\adb backup\adb.exe

各ディレクトリに移動して実行:

adb.exe version

ExpoがADBバージョンを実行していることを確認できました。

Android Debug Bridge version 1.0.36
Revision fd9e4d07b0f5-android

カスタムSDKを使用するGenymotionにはバージョン(c:\ Users \ kyle \ AppData \ Local \ Android \ Sdk \ platform-tools \ adb.exe)がありましたが、

Android Debug Bridge version 1.0.39
Revision 3db08f2c6889-android

テストとして、adbファイル(adb.exe、AdbWinApi.dll、AdbWinUsbApi.dll)を

c:\Users\kyle\AppData\Local\Android\Sdk\platform-tools\adb.exe

そして、それらをバックアップフォルダに配置しました。次に、次の場所にあるadbファイルを移動しました

c:\Program Files\Expo XDE\resources\app\node_modules\xdl\binaries\windows\adb\adb.exe

同じ場所に。私はadbを殺しました:

adb kill-server

Genymotionデバイスが既に実行されているため、adbサーバーが自動的に再起動しました。Expo XDE内の[Restart]ボタンを押すと、すぐに機能し始めました。これは、午前1時13分4秒に再起動ボタンを押したログです。

12:45:53 AM
could not install *smartsocket* listener: cannot bind to 127.0.0.1:5037: Only one usage of each socket address (protocol/network address/port) is normally permitted. (10048)
could not read ok from ADB Server
* failed to start daemon *
error: cannot connect to daemon
1:13:04 AM
Restarting project and clearing packager cache (Hold shift while clicking restart to avoid clearing cache).
1:13:11 AM
Starting React Native packager...
1:13:17 AM
Scanning 543 folders for symlinks in C:\Users\kyle\git\betalog\node_modules (49ms)
1:13:17 AM
1:13:19 AM
Couldn't adb reverse: closed
1:13:20 AM
Project opened! You can now use the "Share" or "Device" buttons to view your project.
1:13:26 AM
Couldn't adb reverse: closed
1:13:26 AM
Downloading latest version of Expo
1:13:28 AM
Installing Expo on device
1:13:33 AM
Opening on Android device
1:13:56 AM
Building JavaScript bundle: finished in 59643ms.
1:14:01 AM
Dependency graph loaded.
1:14:03 AM
Your JavaScript transform cache is empty, rebuilding (this may take a minute).

結論: Expoがシミュレートされたデバイスと適切に通信できるように、GenymotionとExpoは同じバージョンのadbを使用する必要がある場合があります。GenymotionをAndroid SDKの場所に向け、Expo XDEが同じバージョンであることを確認すると、デバイス間の正しい通信が可能になります。Expo XDEバージョンをSDKの場所に移動しましたが、別の方法で実行できる場合があります(sdk ADBファイルを取得して、Expo XDEリソースの場所に配置します)。

PS私はこの問題に関連するすべてのスタックオーバーフローの投稿を終えました。ちょうどあなたが私のタスクマネージャーが実行中のadb.exeの3つのインスタンスを表示していることを知っているだけです。あなたがそれらのいずれかを殺した場合、彼らはただ戻ってきます。

これが/ cheersに役立つことを願っています


8

多分あなたのadbバージョンは不一致です

小切手:

adb version 

次に:

cd /Path/to/Android/Sdk/platform-tools && ./adb version

これら2つが異なる場合、ここでエラーが発生します。sysからadbを削除し、platform-toolsにあるものを/ usr / bin /にコピーします。


4

システムをクリーンに保ちたい場合は、Android StudioなしでGenymotionを使用することもできます。

  1. Genymotionののコピーを見つけますadb。macOSでは、これは通常/Applications/Genymotion.app/Contents/MacOS/tools/です。
  2. Genymotion toolsディレクトリをパスに追加します- またはexport PATH=/Applications/Genymotion.app/Contents/MacOS/tools/:$PATHを実行/追加します。~/.bash_profile~/.bash_rc
  3. 端末からadbを実行できることを確認してください。

https://docs.expo.io/versions/latest/workflow/genymotionから)


4

システムのadbバージョンは、Android sdk platform-toolsのadbバージョンとは異なります。以下の提案は、Linuxオペレーティングシステムのための私のための仕事です

  1. sys adbのバージョンを確認するには、次のコマンドを実行します

adbバージョン

Android Debug Bridgeバージョン1.0.39

  1. SDK ADBバージョンを確認する

cd / root / Android / Sdk / platform-tools

./adbバージョン

Android Debug Bridgeバージョン1.0.32

  1. 写す

rm / usr / bin / adb

[注:上記のコマンドは既存のadbを削除してから、sdb / platform-toolsディレクトリからadbをコピーします]

sudo cp / root / Android / Sdk / platform-tools / adb / usr / bin / adb

次に、このコマンドを使用してプロジェクトを実行します

反応ネイティブ実行アンドロイド


これはLinuxに適したソリューションであり、android studioがインストールされているかどうかに関係なく動作します
maroof shittu

3

Expo UIから実行しようとしたときも同じことがありました。回答で説明されているように、同じことをしましたが、アプリが実行されていませんでした。exp android(プロジェクトフォルダー内の)コマンドラインから一度実行しようとすると、アプリケーションは正常に実行され、次回はExpo UIからの実行が成功しました。


2

同様の問題がありました。

まず、アプリをアンインストールしました。次に、Android Studioから提供されたAndroid SDKをGenyMotionにポイントしました。次に、「adb kill-server」をターミナルに実行しました。最後に、「react-native run-android」を再実行して、ビルドに成功しました。


2

私のために働いたステップは次のとおりです:

  • $ adb kill-server

  • $ adb start-server

  • $ cd android

  • $ ./gradlew clean

  • $ cd ..

  • $反応ネイティブrun-android


2

Ubuntuの場合

わたしにはできる!!

  1. sys adbバージョンを確認する

adbバージョン

Android Debug Bridgeバージョン1.0.39

2 SDK adbバージョンを確認する

cd / home / user_name / Android / sdk / platform-tools

./adbバージョン

Android Debug Bridgeバージョン1.0.32

  1. 写す

sudo cp / home / user_name / Android / sdk / platform-tools / adb / usr / local / bin

それで全部です!これで動作します。


1

1. genymotionでカスタムSDKパスを使用します(これが機能しない場合は、2番目のパスを実行してみてください)

2.このコマンドを手動で実行して実行します(SDK PATH / adb彼女はstart -n /パッケージ名/ MainActivity)。

C:\ Users \ AppData \ Local \ Android \ Sdk / platform-tools / adb am ll start -n com.example / com.example.ManiActivity

そして、react-native run-androidを使用してアプリケーションを実行してみてください。


1

これらはステップです

$ adb kill-server

$ adb start-server

$ cd android

$ ./gradlew clean

$ cd ..

$ react-native run-android
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.