React-Native, Android, Genymotion: เซิร์ฟเวอร์ ADB ไม่ได้รับ ACK


168

ฉันกำลังทำงานกับ React-Native, Android และ Genymotion บน Mac เมื่อฉันเรียกใช้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

คำตอบ:


319

หลังจากการวิจัยเพิ่มเติมฉันได้ตระหนักว่า Genymotion ใช้ค่าเริ่มต้น adb ของตนเอง

ป้อนคำอธิบายรูปภาพที่นี่

ฉันเปลี่ยนไปใช้ adb หลักของฉัน (เหมือนเดิมที่ใช้โดยเจ้าของภาษา) และแก้ไขปัญหาได้ ฉันเดาว่าเพราะ adb ของ Genymotion เปิดตัวครั้งแรกฉันได้รับ Address already in useข้อความแสดงข้อผิดพลาด


4
ขอขอบคุณสำหรับการโพสต์นี้. ฉันเกือบจะมีอาการหัวใจวายฉันได้อัพเดตสตูดิโอ android ของฉันเป็น 2.1 เพื่อดูตัวอย่าง 3 เมื่อคืนที่ผ่านมาและ genymotion จะไม่เชื่อมต่ออีกต่อไป นี่ช่วยฉันแก้ปัญหาได้
Simon

7
ฉันลองวิธีนี้แล้ว แต่ยังคงมีข้อผิดพลาดเดิมอยู่ มีทางเลือกอื่นหรือไม่?
calclavia

1
@ user2254679 คุณตรวจสอบหัวข้อนี้ด้วยหรือไม่ stackoverflow.com/questions/5703550/…
Paul

@ พอลคุณช่วยอธิบายเกี่ยวกับเส้นทางที่คุณให้ได้ไหม adbนี้อยู่ที่ไหนซึ่งใช้โดยเจ้าของภาษา? ฉันกำลังพยายามหาเส้นทางของ Android SDK ของฉัน แต่มันไม่ทำงาน ภาษาอังกฤษจะดีที่สุด
K Pal

@KPal เส้นทางนี้ใช้เฉพาะกับการตั้งค่าของคุณเอง ในกรณีของฉันมันเป็นเส้นทางที่มาตรฐานจากการติดตั้ง Android ใน Mac /Users/$yourName/Library/Android/sdkในเวลานั้น: หากคุณติดตั้ง Android คุณควรค้นหาเส้นทางของคุณตามเวอร์ชัน / แพลตฟอร์มของ Android
Paul

45

ฉันใช้ genymotion แต่โซลูชันของ Paul เพียงอย่างเดียวไม่ได้แก้ไขข้อผิดพลาด (สำหรับ Mac)

ฉันต้อง:

อัปเดต Android SDK เป็นเวอร์ชันล่าสุด (24.4.1) ผ่านทางผู้จัดการ SDK

พิมพ์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ไดเรกทอรีจะไม่จำเป็นใน classpath คุณต้องเพิ่มเพื่อเชื่อมต่อกับ adb
Orar

10

ระบบ: Windows 10

ปัญหาของฉัน:การตั้งค่า Genymotion ให้ชี้ไปที่ SDK ที่กำหนดเองไม่มีผลกระทบใด ๆ ฉันยังคงได้รับ:

ไม่สามารถเริ่มโปรเจ็กต์บน Android: ไม่สามารถติดตั้งตัวรับฟัง smartsocket: ไม่สามารถผูกกับ 127.0.0.1:5037: อนุญาตให้ใช้ที่อยู่ซ็อกเก็ตแต่ละอันได้เพียงครั้งเดียวเท่านั้น (โปรโตคอล / ที่อยู่เครือข่าย / พอร์ต) (10048) ไม่สามารถอ่าน ok จาก ADB Server * ล้มเหลวในการเริ่ม daemon * ข้อผิดพลาด: ไม่สามารถเชื่อมต่อกับ daemon

สิ่งที่ฉันค้นพบคือมีความแตกต่างในเวอร์ชัน 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

ขณะที่ Genymotion ที่ใช้ SDK ที่กำหนดเองมีเวอร์ชัน (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

ซึ่งทำให้รีสตาร์ทเซิร์ฟเวอร์ adb โดยอัตโนมัติเนื่องจากอุปกรณ์ Genymotion ของฉันทำงานอยู่ ฉันกดปุ่ม "เริ่มต้นใหม่" ภายใน Expo XDE และเริ่มทำงานทันที นี่คือบันทึกที่ฉันกดปุ่มรีสตาร์ทเวลา 1:13:04 น.:

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).

สรุป: Genymotion และ Expo อาจต้องใช้ adb รุ่นเดียวกันเพื่อให้ Expo สามารถสื่อสารกับอุปกรณ์จำลองได้อย่างเหมาะสม การชี้จีโนมไปยังตำแหน่ง SDK Android ของคุณและมั่นใจว่า Expo XDE มีเวอร์ชันเดียวกันนั้นจะอนุญาตการสื่อสารที่ถูกต้องระหว่างอุปกรณ์ ฉันย้ายรุ่น Expo XDE ไปยังตำแหน่ง SDK แต่คุณอาจไปทางอื่นได้ (นำไฟล์ sdk ADB และวางไว้ในตำแหน่งทรัพยากร Expo XDE)

ป.ล.ฉันได้รับทั้งหมดผ่านโพสต์ stackoverflow ที่เกี่ยวข้องกับปัญหานี้ เพื่อให้พวกคุณรู้ว่าตัวจัดการงานของฉันแสดง adb.exe สามอินสแตนซ์ที่ทำงานอยู่ หากคุณฆ่าพวกเขาพวกเขาจะกลับมา

หวังว่านี่จะช่วย / ไชโย


8

บางทีเวอร์ชัน adb ของคุณอาจไม่ตรงกัน

ตรวจสอบ:

adb version 

แล้ว:

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

หากทั้งสองแตกต่างกันคุณมีข้อผิดพลาดที่นี่เพียงแค่ลบ adb จาก sys และคัดลอกหนึ่งที่อยู่ในเครื่องมือแพลตฟอร์มเพื่อ / usr / bin /


4

หากต้องการทำให้ระบบของคุณสะอาดอยู่เสมอคุณสามารถใช้ Genymotion ได้โดยไม่ต้องใช้ Android Studio :

  1. พบสำเนา Genymotion adbของ บน MacOS /Applications/Genymotion.app/Contents/MacOS/tools/นี้เป็นปกติ
  2. เพิ่มไดเรกทอรีเครื่องมือ Genymotion เพื่อเส้นทางของคุณ - การดำเนินการ / เพิ่มบรรทัด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 บนระบบของคุณแตกต่างจาก adb เวอร์ชันบน android sdk platform-tools คำแนะนำด้านล่างนี้ใช้ได้สำหรับฉันสำหรับระบบปฏิบัติการ Linux

  1. ตรวจสอบรุ่น sys adb เรียกใช้คำสั่งด้านล่าง

รุ่น adb

สะพานดีบั๊ก Android รุ่น 1.0.39

  1. ตรวจสอบรุ่น sdk adb

cd / root / Android / Sdk / platform-tools

รุ่น. adad

สะพาน Debug Android รุ่น 1.0.32

  1. สำเนา

rm / usr / bin / adb

[หมายเหตุ: คำสั่งข้างต้นลบ adb ที่มีอยู่แล้วคัดลอก adb จากไดเรกทอรี sdk / platform-tools]

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

จากนั้นเรียกใช้โครงการโดยใช้คำสั่งนี้

react-native run-android


นี้เป็นทางออกที่ดีสำหรับลินุกซ์จะทำงานร่วมกับหุ่นยนต์หรือไม่มีสตูดิโอการติดตั้ง
Maroof ชิตตู

3

ฉันมีสิ่งเดียวกันขณะที่ฉันพยายามเรียกใช้จาก expo UI ทำสิ่งเดียวกันตามที่อธิบายไว้ในคำตอบ แต่แอปไม่ทำงาน เมื่อเคยลองเรียกใช้exp androidจากบรรทัดคำสั่ง (ในโฟลเดอร์โครงการ) แอปพลิเคชันรันได้สำเร็จและครั้งต่อไปที่เรียกใช้จาก Expo UI ก็ประสบความสำเร็จ


2

ฉันมีปัญหาที่คล้ายกัน

ก่อนอื่นฉันถอนการติดตั้งแอพ จากนั้นฉันชี้ GenyMotion ไปยัง android sdk ที่ได้รับจาก Android Studio ต่อไปฉันรัน "adb kill-server" ลงในเทอร์มินัล ในที่สุดฉันก็วิ่งอีกครั้ง "ทำปฏิกิริยากับเจ้าของรัน-android" และประสบความสำเร็จในการสร้าง


2

ขั้นตอนที่เหมาะกับฉันคือ:

  • $ adb kill-server

  • $ adb start-server

  • $ cd android

  • $ ./gradlew สะอาด

  • $ cd ..

  • $ react-native run-android


2

สำหรับ Ubuntu

มันใช้งานได้สำหรับฉัน !!

  1. ตรวจสอบเวอร์ชัน sys adb

รุ่น adb

สะพานดีบั๊ก Android รุ่น 1.0.39

ตรวจสอบรุ่น SDK ของ adk

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

รุ่น. adad

สะพาน Debug Android รุ่น 1.0.32

  1. สำเนา

sudo cp / home / ชื่อผู้ใช้ / Android / sdk / platform-tools / adb / usr / local / bin

นั่นคือทั้งหมด! มันจะทำงานตอนนี้


1

1. ใช้เส้นทาง sdk ที่กำหนดเองใน genymotion (สมมติว่าอันนี้ใช้งานไม่ได้หมายความว่าลองใช้คำสั่งที่สอง)

2. ใช้คำสั่งนี้เพื่อดำเนินการด้วยตนเอง (เส้นทาง SDK / adb เธอจะเริ่ม -n / ชื่อแพคเกจ / MainActivity)

C: \ Users \ AppData \ Local \ Android \ Sdk / แพลตฟอร์มเครื่องมือ / adb เธอจะเริ่ม -n com.example / com.example.ManiActivity

และพยายามเรียกใช้แอปพลิเคชันโดยใช้ react-native run-android


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.