รุ่นเซิร์ฟเวอร์ adb ไม่ตรงกับไคลเอนต์นี้


151

เมื่อใดก็ตามที่ฉันพยายามเรียกใช้adb devices:

            $ adb devices
            * daemon not running. starting it now *
            * daemon started successfully *
            List of devices attached
            HT0ANRV05740    device

มันบอกว่า daemon ไม่ทำงานและรีสตาร์ท daemon

จากนั้นถ้าฉันเรียกใช้อุปกรณ์ adb อีกครั้งมันก็ทำแบบเดียวกัน -

            $ adb devices
            adb server is out of date.  killing...
            * daemon started successfully *
            List of devices attached
            HT0ANRV05740    device

จากนั้นถ้าฉันเรียกใช้อีกครั้งมันก็ทำสิ่งเดียวกันอีกครั้ง -

            $ adb devices
            adb server is out of date.  killing...
            * daemon started successfully *
            List of devices attached
            HT0ANRV05740    device

กรุณาช่วย!!

นอกจากนี้ DDMS ของฉันยังให้ข้อความต่อไปนี้กับฉันด้วย -

[2011-02-23 16:17:05 - DeviceMonitor]Adb connection Error:An existing connection was forcibly closed by the remote host

นี่คือบันทึกจากก่อนที่ adb จะรีสตาร์ท -

              1291        locapi_rpc_glue  V  loc_ioctl
              1291                    RPC  D  written RPC packet size: [480]
              1291                    RPC  D  read RPC packet
              1291                    RPC  D  read RPC packet size: [28]
              1291             lib_locapi  V  qct_loc_eng_inject_xtra_data, inject part = 100, len = 167, len = 167
              1291             lib_locapi  V  qct_loc_eng_inject_xtra_data, total part = 100, len = 167
              1291        locapi_rpc_glue  V  loc_ioctl
              1291                    RPC  D  written RPC packet size: [248]
              1291                    RPC  D  read RPC packet
              1291                    RPC  D  read RPC packet size: [28]
              1291             lib_locapi  D  qct_loc_eng_inject_xtra_data: injected 39767, SUCCESS
              1291             lib_locapi  V  inject_xtra_waiting = flase
              1291    GpsLocationProvider  D  Releasing wakelock
              1291            WifiService  D  releaseWifiLockLocked: WifiLock{NetworkLocationProvider type=2 binder=android.os.Binder@47aead50}
              1291            WifiService  D  enable and start wifi due to updateWifiState
              1218            rmt_storage  I  rmt_storage open event
              1218            rmt_storage  I  rmt_storage client thread started
              1218            rmt_storage  I  rmt_storage events processing done
              1218            rmt_storage  I  rmt_storage register cb event
              1218            rmt_storage  I  rmt_storage status id = 2
              1218            rmt_storage  I  rmt_storage events processing done
              1218            rmt_storage  I  rmt_storage open event
              1218            rmt_storage  I  rmt_storage client thread started
              1218            rmt_storage  I  rmt_storage events processing done
              1218            rmt_storage  I  rmt_storage register cb event
              1218            rmt_storage  I  rmt_storage status id = 2
              1218            rmt_storage  I  rmt_storage events processing done
              1218            rmt_storage  I  rmt_storage write event
              1218            rmt_storage  I  unblock rmt_storage client thread
              1218            rmt_storage  I  rmt_storage events processing done
              1218            rmt_storage  I  rmt_storage write: bytes written = 3145216
              1218            rmt_storage  I  rmt_storage write: bytes written = 512
              1218            rmt_storage  I  rmt_storage status handle = 1
              1291       BatteryStatsImpl  I  notePhoneSignalStrengthLocked: 4->3
              1218            rmt_storage  I  rmt_storage write event
              1218            rmt_storage  I  rmt_storage events processing done
              1218            rmt_storage  I  unblock rmt_storage client thread
              1291    PowerManagerService  D  New lightsensor value:40, lcdValue:143
              1291    PowerManagerService  D  lightSensorChangedLocked, buttonValue >= 0, mPowerState = 3
              1218            rmt_storage  I  rmt_storage write: bytes written = 3145216
              1218            rmt_storage  I  rmt_storage write: bytes written = 512
              1218            rmt_storage  I  rmt_storage status handle = 2
              1291                    RPC  D  read RPC packet
              1291                    RPC  D  read RPC packet size: [80]
              1291        locapi_rpc_glue  V  Callback received: 80 (cb_id=0x50B0000 handle=1)
              1291                    RPC  D  written RPC packet size: [28]
              1470   usicWidgetController  D  unbindMusicPlaybackService()
              1707   MediaPlaybackService  E  BadQueue mPlayListLen : 0 mAlbumListLen : 0 mShrinkAlbumListLen : 0
              1291    NotificationService  V  Battery Full, Charging
              1291                 lights  E  write ok string=0,len=1
              1291                 lights  E  write ok string=0,len=1
              1291                 lights  E  write ok string=0 0,len=3
              1291                 lights  E  write ok string=1,len=1
              1707       MediaPlayer.java  D  setOnCompletionListener being cleaned to null
              1291                 lights  E  write ok string=0,len=1
              1291                 lights  E  write ok string=0 0,len=3
              1291    NotificationService  V  Turn off Jogball/OJ LED
              1291    NotificationService  D  cancelNotification, ACTION_NOTIFICATION_REMOVE,pkg=com.htc.music,id=1
              1291           AudioService  I   AudioFocus  abandonAudioFocus() from android.media.AudioManager@476ddee0com.htc.music.MediaPlaybackService$5@476dd838

สำหรับฉันช่วยออกแอพเดสก์ท็อป Helium ซึ่งมีเวอร์ชัน adb ของตัวเอง :)
Velda

ในกรณีของฉันมันคือ Genymotion มีการกำหนดค่าให้ใช้เวอร์ชันของตนเองหรือคุณสามารถตั้งค่าของคุณเอง
Crysfel


ใน AOSP ฉันเปลี่ยนaosp/out/host/darwin-x86/bin/adbไปadb-aospเพราะaliasingด้านบนของที่ท้องถิ่น (จาก AOSP) รุ่นของฉันไม่ได้ทำงาน
Paschalis

คำตอบ:


299

คุณใช้ Genymotion สำหรับอุปกรณ์เสมือนจริงหรือไม่?

ถ้าใช่ข้อผิดพลาดนี้อาจเกิดขึ้นเพราะ ADB จาก Genymotion ขัดแย้งกับ ADB ของคุณจาก Android SDK (ใช้หมายเลขพอร์ตเดียวกัน) เพื่อแก้ไขปัญหานี้เพียงไปที่settings=> เลือกADBแท็บ => คลิกที่ตัวเลือกUse custom Android SDK Toolsและตั้งค่าโฟลเดอร์ SDK ของคุณ

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

หลังจากที่คุณกำหนดค่านี้ลองรีสตาร์ท adb ของคุณโดยไปที่โฟลเดอร์platform-toolsที่adbวางไว้และทำคำสั่งนี้:

  • ./adb kill-server
  • ./adb start-server

* คำแนะนำ: คุณสามารถปิดกระบวนการ Genymotion ก่อนที่จะเรียกใช้คำสั่งด้านบน

หวังว่าความช่วยเหลือนี้


ขอบคุณ Aditya !!! ในที่สุดคำตอบที่ดี มันเริ่มต้นหลังจากอัพเดท android studio ฉันกำลังบ้ากับสิ่งนี้ติดตั้ง sdk และทุกอย่าง ฉันคิดว่ามันเป็นข้อผิดพลาดในเวอร์ชั่นใหม่
TacoEater

1
เฉพาะสิ่งนี้ช่วย! มีเครื่องมือเล็ก ๆ ที่เรียกว่า 'adbfix' ซึ่งให้คำแนะนำแก่ฉันว่านี่อาจเป็นปัญหาเกี่ยวกับเส้นทาง แต่จริง ๆ แล้วก็ไม่ได้ทำอะไรเพื่อแก้ไขปัญหา
icarus74

ต้องรัก Genymotion ในขณะที่อีมูเลเตอร์จำลองใช้ทรัพยากรมากเกินไปเพราะมันทำให้เครื่องแล็ปท็อปของฉันทำงานบน Ubuntu
thethakuri

1
ฉันไม่ได้ติดตั้งจีโนมในระบบของฉัน ฉันจะแก้ไขได้อย่างไร
arka.b

7
เครื่องมือจำลองจีโนมใด ๆ จะต้องปิดก่อนที่จะรันคำสั่งด้านบน
Robert

63

ฉันถอนการติดตั้ง Dell PC Suite และ HTC Sync จากคอมพิวเตอร์ของฉันและปัญหานี้หายไป

แก้ไข:เพื่ออธิบายเพิ่มเติมเล็กน้อยเกี่ยวกับสาเหตุของปัญหานี้: HTC sync มาพร้อมกับเซิร์ฟเวอร์ ADB ของตนเอง และมันจะปรับปรุงตัวแปรสภาพแวดล้อม PATH ของคุณให้ชี้ไปที่รุ่นของเซิร์ฟเวอร์ แก้ไขตัวแปร PATH และลบการอ้างอิงไปยังไดเรกทอรี HTC Sync ตอนนี้คุณกำลังใช้ ADB ของ Google อีกครั้ง


1
ปัญหานี้อยู่ในอุปกรณ์ mac os-x apple ของฉัน
Ritesh Kumar Singh

4
HTC Sync เป็นปัญหา มันทำงานอย่างต่อเนื่องในพื้นหลังทำให้เกิดข้อขัดแย้งกับ adb.exe
rharvey

LG AirBridge ทำให้เกิดปัญหากับฉัน - ถอนการติดตั้งแล้วadb start-serverทำงานได้
jamsandwich

1
ในฐานะนักพัฒนาฉันต้องการไดรเวอร์ HTC USB ที่มาพร้อมกับ HTC Sync Manager นี่เป็นกรณีเดียวสำหรับ Windows 10 ซึ่งเป็นระบบปฏิบัติการที่ฉันใช้ หลังจากการติดตั้ง HTC Sync จะทำงานและทำงานในพื้นหลังอย่างต่อเนื่อง คุณต้องการเปิดตัวจัดการงาน> แท็บบริการแล้วปิดงานพื้นหลัง HTCMonitorService วิธีนี้จะป้องกันไม่ให้ HTC Sync ขัดแย้งกับ Google ADB และจะป้องกันไม่ให้ Google ADB ล็อกเมื่ออุปกรณ์ HTC เชื่อมต่อกับพีซี
tom_mai78101

28

ฉันพบว่าบางครั้งฉันจำเป็นต้องฆ่าและรีสตาร์ทเซิร์ฟเวอร์ด้วยตนเองอย่างชัดเจน:

adb kill-server
adb start-server

ช็อตนี้โดยทั่วไปเพียงพอที่จะนำมันกลับมาใช้อีกครั้งและป้องกันadb server is out of date. killing...ข้อความซ้ำ


การฆ่าและการรีสตาร์ทดูเหมือนจะใช้ได้สำหรับฉัน แต่ตอนนี้ฉันได้รับข้อความแสดงข้อผิดพลาด "error: มากกว่าหนึ่งอุปกรณ์และโปรแกรมจำลอง" เมื่อฉันทำ: "adb tcpip 5555" ตามคำแนะนำที่ได้รับการยอมรับ
jay_t55

ในกรณีของฉันมีหลายกระบวนการของ adb ที่ทำงานอยู่ดังนั้นฉันจึงทำการโทรหลายครั้งadb kill-serverจนกว่าจะมีข้อความว่า "daemon ไม่ทำงาน ... "
mr5

22

ตรวจสอบให้แน่ใจว่าไม่มีกระบวนการ adb อื่น ๆ ที่ทำงานอยู่

อาจมีกระบวนการ adb มากกว่าหนึ่งกระบวนการที่ทำงานบนระบบ เครื่องมือต่าง ๆ เช่นAndroid Reverse Tetherอาจใช้เครื่องมือ adb เวอร์ชันของตนเองดังนั้นรุ่นในหน่วยความจำอาจขัดแย้งกับรุ่นที่เรียกใช้จากบรรทัดคำสั่ง (ผ่านตัวแปรเส้นทาง)

ของ windows

ใน Windows กดCTL+ Shift+ ESCในการเข้าถึงที่ Task Manager เรียงลำดับในภาพชื่อคอลัมน์แล้วฆ่าทุกกรณีadb.exeโดยการคลิกขวาและเลือกจบกระบวนการ โปรดทราบว่ามีหลายกรณีadb.exeด้านล่าง:

อินสแตนซ์ adb.exe หลายรายการ - วิธีการฆ่า

Linux (Android)

ในสภาพแวดล้อม Linux เพียงใช้kill -9คำสั่ง บางอย่างเช่นนี้ทำงานบนอุปกรณ์ Android ที่ทำงานอยู่adb(ใช้psเอาต์พุต, ค้นหาโดยใช้grepกระบวนการที่เริ่มต้นadb, รับ ID กระบวนการจากadbกระบวนการ (es) และส่ง ID นั้นไปยังkill -9คำสั่ง):

kill -9  $(ps  | grep "S adb" | busybox awk '{print $2}')

จากนั้นรีสตาร์ท adb

เมื่อadbกระบวนการ - และเช่นนั้นขัดแย้งกัน - ได้รับการแก้ไขแล้วให้ลองเรียกใช้adbจากบรรทัดคำสั่งอีกครั้ง:

adb start-server

ในกรณีของฉันฉันพบว่าอินสแตนซ์อื่นของ adb ทำงานเป็นส่วนหนึ่งของ GapDebug การหยุด GapDebug ฆ่ากระบวนการ adb ที่กำลังทำงานและเรียก. / adb start-server ใน ~ / Library / Android / sdk // แพลตฟอร์มเครื่องมือแก้ไขมัน
Gwened

20

ในเครื่องของฉัน (Ubuntu 14.04 และ Genymotion 2.5.2) สาเหตุของปัญหาคือฉันมีไฟล์ adb 2 ไฟล์ในเวอร์ชันที่แตกต่างกัน

(ก่อนที่จะ จำกัด ขอบเขตของปัญหานี้ให้แคบลงฉันมีการตั้งค่าของ Genymotion> "ใช้เครื่องมือ Android SDK แบบกำหนดเอง" ซึ่งอ้างอิงถึงไดเรกทอรี Android SDK ที่ติดตั้งในเครื่องของฉันตามคำแนะนำจาก Aditya Kresna Permana ฉันยังพยายามฆ่าและเริ่มเซิร์ฟเวอร์ adb โซลูชั่นจากในเว็บ)

จากนั้นเห็นว่าทำงานadb versionจากไดเรกทอรีการติดตั้ง Android SDK ของฉัน“ ~ / Android / Sdk / platform-tools” ที่ผลิต - "Android Debug Bridge เวอร์ชัน 1.0.32"

แต่adb versionคำสั่งจากไดเรกทอรี“ / usr / bin” ผลิต -“ Android Debug Bridge เวอร์ชัน 1.0.31 "

ดังนั้นเพียงแค่ติดตาม - http://bernaerts.dyndns.org/linux/74-ubuntu/328-ubuntu-trusty-android-adb-fastboot-qtadbเพื่ออัปเดต adb ใน“ / usr / bin”

# adb version
Android Debug Bridge version 1.0.31
# wget -O - https://skia.googlesource.com/skia/+archive/cd048d18e0b81338c1a04b9749a00444597df394/platform_tools/android/bin/linux.tar.gz | tar -zxvf - adb
# sudo mv adb /usr/bin/adb
# sudo chmod +x /usr/bin/adb
# adb version
Android Debug Bridge version 1.0.32

และตอนนี้ทำงานadb devicesได้อย่างสมบูรณ์แบบตามที่คาดไว้

และยังแก้ไขปัญหาที่เกี่ยวข้องก่อนที่แอพ PhoneGap (Cordova) ของฉันไม่ได้รับการรวมเข้ากับอุปกรณ์เสมือนของ Genymotion ตอนนี้เห็นได้ชัดว่าปัญหาได้รับการแก้ไขเช่นกัน


ขอบคุณมาก. บันทึกเวลาของฉัน อันนี้ใช้ได้ดีกับ Ubuntu 14.04 ต้องการทราบว่าคุณได้รับ URL ของ adb อย่างไร @Rohan_Paul
Akbar Sha Ebrahim

ฉันได้รับตอนนี้: ทุบตี: / usr / bin / adb: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว
Tushar Saha

17

ปัญหานี้เกิดขึ้นเนื่องจากคุณกำลังเรียกใช้ adb นอกเหนือจากที่อยู่ใน SDK หากใช้ linux ให้ตรวจสอบตำแหน่งของ adb binary

which adb
Expected Output : ANDROID_SDK/platform-tools/adb

หากไม่ได้ชี้ไปที่ ANDROID_SDK / platform-tools / adb แสดงว่าคุณกำลังเรียกใช้ adb เวอร์ชันเก่าที่ติดตั้งในตำแหน่งอื่นบนเครื่อง

ไม่มีข้อผิดพลาดใด ๆ ในการรัน adb นอกเหนือจาก SDK ที่ให้มา แต่ข้อเสียคือมันไม่ได้รับการอัปเดตโดยอัตโนมัติเมื่อมีการอัปเดต android SDK และนั่นคือสาเหตุที่คุณใช้กับปัญหาเวอร์ชันล้าสมัยนี้

การแก้ไขที่ง่ายขึ้นและเพื่อหลีกเลี่ยงปัญหานี้ในอนาคตเปลี่ยนชื่อไฟล์ไบนารี adb ที่เก่ากว่า (ทำให้เข้าใจผิด) เป็นอย่างอื่น

ทำตามขั้นตอนเพื่อแก้ไขปัญหานี้

$ which adb
*o/p /usr/bin/adb  -   (output will depend on your machine)*
$ cd /usr/bin/
$ ls -lt | grep adb
*o/p -rwxr-xr-x 1 root   root      160912 Mar 31  2016 adb*
$ sudo mv adb adb_bakup
$ ls -lt | grep adb
o/p -rwxr-xr-x 1 root   root      160912 Mar 31  2016 adb_bakup
$ export PATH="/path/to/android_sdk/platform-tools:$PATH"
$ which adb  
*o/p <your android sdk dir>/platform-tools/adb*   ---> You are all good now

ฉันลองจาก Mac ของฉันมันแค่บอกฉันว่าฉันไม่ได้รับอนุญาตให้เปลี่ยนชื่อ?
Jay Smoke

คุณต้องมีสิทธิ์ผู้ดูแลระบบเพื่อเปลี่ยนชื่อ dir ภายใต้ / usr
Akh

ฉันเข้าสู่ระบบในฐานะ root และไม่สามารถเปลี่ยนได้
Jay Smoke

ทางออกที่ดีฉันมี adb symlink ไปที่ .. / Cellar / ... ดังนั้นแม้ว่า adb รุ่นล่าสุดจะถูกดาวน์โหลดด้วย sdk manager การตั้งค่าเส้นทางที่ดีแก้ไขปัญหาที่ล้าสมัย
Luidgi Gromat

15

ฉันเพิ่งออกจาก HTC Sync ลองอีกครั้งและใช้งานได้ หมายเหตุ: โทรศัพท์เป็นสีดำ (ล็อค) ฉันเพิ่งเปิดใช้งานและมีแอปพลิเคชันของฉันทำงานอยู่ :)


ฉันมีปัญหาเดียวกันกับ ZTE Sync ฉันลบมันและอุปกรณ์ของฉันก็ปรากฏขึ้น
ovejaexiste

11

ระบบ: 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 สามอินสแตนซ์ที่ทำงานอยู่ หากคุณฆ่าพวกเขาพวกเขาจะกลับมา

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


1
วิธีนี้แก้ไขปัญหาแรกของฉันหลังจากผ่านไปหลายชั่วโมง (ขอบคุณเพื่อน) ปัญหาต่อไปคืออุปกรณ์ที่เลียนแบบไม่ได้รับอนุญาต (อุปกรณ์ adb) ซึ่งใช้เวลาในการแก้ไขน้อย
Jonathan

8

ดูเหมือนว่า ADB daemon บนอุปกรณ์ (adbd) ไม่เห็นด้วยกับกระบวนการเซิร์ฟเวอร์ ADB ในคอมพิวเตอร์โฮสต์ของคุณว่าเป็นรุ่นใดของโปรโตคอลที่พวกเขากำลังพูด คุณกำลังใช้ SDK รุ่นใดและรุ่นของระบบปฏิบัติการบนอุปกรณ์ที่คุณกำลังดีบักคืออะไร

สิ่งที่คุณอาจต้องทำคือลดระดับรุ่นเครื่องมือ SDK ของคุณเพื่อให้ ADB daemon และกระบวนการอยู่ในข้อตกลง ฉันคิดว่ากระบวนการเซิร์ฟเวอร์เข้ากันได้อย่างสมบูรณ์แบบย้อนหลัง แต่อาจเป็นหนึ่งในกรณีมุมเหล่านั้นที่มันไม่ได้ Google ไม่ได้โฆษณาความจริงที่ว่าคุณจะได้รับแพคเกจเครื่องมือ SDK เก่าของพวกเขา แต่พวกเขาสามารถพบได้โดยมองในพื้นที่ที่เก็บที่http://developer.android.com


1
คุณต้องการแนะนำให้ฉันปรับลดรุ่นเป็นรุ่นใด
Arunabh Das

คุณใช้อุปกรณ์รุ่นใดและรุ่น OS ตัวใดทำงานอยู่ ฉันไม่คิดว่ามันจำเป็นที่จะต้องปรับลดรุ่นเพราะโดยทั่วไปไม่จำเป็น แต่อย่างที่ฉันพูดนี่อาจเป็นกรณีมุม SDK r10 เพิ่งเปิดตัวในสัปดาห์นี้และ r9 เพียงเดือนเดียวหรือมากกว่านั้น หากปัญหาได้รับการแนะนำเมื่อเร็ว ๆ นี้ r7 ควรให้พื้นฐานที่มั่นคงกลับไปยังฤดูร้อนที่ผ่านมา คุณสามารถค้นหารุ่นก่อนหน้าเหล่านี้ที่developer.android.com/sdk/tools-notes.html ขอให้โชคดี
Eric Cloninger

เวอร์ชั่นของระบบปฏิบัติการบนอุปกรณ์ = 2.2 และ SDK = 10
Arunabh Das

นี่ไม่ใช่รุ่นที่ไม่ตรงกันระหว่างadbdและadb serverค่อนข้างจะอยู่ระหว่างadb serverและadb client(ทั้งสองทำงานบนพีซี)
อเล็กซ์พี

7

มีวิธีที่รวดเร็วในการทำสิ่งนั้นก่อน

sudo rm /usr/bin/adb

แล้วก็

sudo ln -s /home/{{username}}/Android/Sdk/platform-tools/adb  /usr/bin/adb

วิธีที่เร็วที่สุดในการแก้ไขปัญหา


7
ไม่สามารถเชื่อว่าฉันมีปัญหาเดียวกันและฉันก็มาเพื่อรับคำตอบจากตัวเองอีกครั้ง
เอียนแซมซ์

นี่เป็นวิธีที่เร็วที่สุดอย่างแท้จริง !! ขอบคุณ!
Abbas

5

ฉันเพียงปิดแอปพลิเคชัน htc sync อย่างสมบูรณ์และลองอีกครั้ง มันทำงานได้ตามที่ควรจะเป็น


5

ฉันตีหัวของฉันกับผนังในนี้ สิ่งนี้เริ่มเกิดขึ้นเมื่อฉันติดตั้ง HTC sync เวอร์ชั่นล่าสุด (3.0.5579) ด้วยเหตุผลบางอย่าง adb.exe ก็ปรากฏขึ้นหลายครั้งในการจัดการงานและฉันได้รับเซิร์ฟเวอร์ adb ล้าสมัยฆ่าข้อผิดพลาดหลายครั้ง ฉันพบรุ่น adb.exe ในไดเรกทอรี HTC sync และไดเรกทอรีเครื่องมือแพลตฟอร์ม SDK ของ Android ฉันมีการตั้งค่าเส้นทางอย่างถูกต้องชี้ไปที่ไดเรกทอรี Android SDK และไม่เห็นเส้นทาง HTC Sync (บางทีฉันอาจพลาดบางอย่าง แต่ไม่คิดอย่างนั้น) อย่างไรก็ตามเพื่อแก้ไขปัญหาฉันเพียงแค่เปลี่ยนชื่อไฟล์ adb.exe ในไดเรกทอรี HTC Sync และทุกอย่างทำงานได้อีกครั้ง นี่อาจไม่ใช่วิธีที่ถูกต้องในการแก้ไขปัญหานี้ แต่ใช้งานได้สำหรับฉัน


5

ช่วยฉันด้วย: หยุด HTC Sync (ในถาดระบบ) และเปลี่ยนชื่อ adb.exe ของ HTC (C: \ Program Files (x86) \ HTC \ HTC Sync 3.0 \ adb.exe)


5

ระบบ: Windows 7, Android Studio

ข้อผิดพลาดนี้เกิดขึ้นเมื่อฉันวิ่งadb devicesจาก Windows Commandline

สาเหตุหลักคือadb ที่ฉันเรียกใช้จาก commandline ไม่ใช่ adb เดียวกับที่เรียกใช้จาก Android Studio

สารละลาย:

  1. ขั้นแรกฆ่ากระบวนการ adb ที่ทำงานอยู่ทั้งหมดบนเครื่อง

    taskkill /F /IM adb.exe

  2. เรียกใช้แอปของคุณจาก Android Studio

  3. ค้นหาตำแหน่งไฟล์ที่แน่นอนของ adb.exe จาก Windows Task Manager หรือโดยใช้คำสั่งด้านล่าง

    wmic process where "name='adb.exe'" get ProcessID, ExecutablePath

  4. บนพรอมต์คำสั่งของ Windows ให้เรียกใช้where adbเพื่อค้นหา adb ที่เรียกใช้จากพรอมต์คำสั่ง เส้นทางนี้จะแตกต่างจากในขั้นตอนที่ 3 ด้านบน

  5. แก้ไขตัวแปรระบบ Windows PATH ลบเส้นทางพื้นฐานที่พบในขั้นตอนที่ 4 จากมัน

  6. หลังจากที่คุณแก้ไข PATH แล้วคุณจะเห็นเนื้อหาปัจจุบันของตัวแปรนี้โดยพิมพ์คำสั่งด้านล่างในพรอมต์คำสั่งใหม่ (อย่าใช้พรอมต์เก่า)

    echo %PATH%

ตอนนี้เรียกใช้ adb จากพรอมต์คำสั่ง ไม่ควรแสดง "ข้อผิดพลาดเซิร์ฟเวอร์ล้าสมัย"!


5

ฉันประสบปัญหาที่คล้ายกันซึ่งความพยายามของฉันที่จะใช้adbเช่นadb logcatให้ผลลัพธ์ข้อผิดพลาดนี้:

adb server version (40) doesn't match this client (36); killing...

วิธีนี้ใช้ได้กับฉันในปี 2018 บน Ubuntu 18.04 จาก Android Studio 3.2.1 โดยใช้เทอร์มินัล

คำสั่งมีดังนี้:

adb kill-server sudo cp ~/Android/Sdk/platform-tools/adb /usr/bin/adb sudo chmod +x /usr/bin/adb adb start-server

คุณอาจต้องปรับcpอาร์กิวเมนต์คำสั่งตามพา ธ ไปยังAndroid/ระบบของคุณ

รุ่งโรจน์รุ่นที่ 2 ถึงที่มาของฉัน: https://stackoverflow.com/a/40991118/7015599


1
ฉันสามารถทำสิ่งที่คล้ายกันโดยไม่ต้องแทนที่ / usr / bin / adb ฉันตั้งค่านามแฝงใน bash_aliases -> alias adb = '~ / Android / Sdk / platform-tools / adb' ที่มา. bashrc และดีไป
James


4

ก่อนปิดทุกสิ่งที่ใช้ ADB (Android Studio, Eclipse, Emulator (Bluestack เช่นกัน)) จากนั้นทำ

adb kill-server
adb start-server

ในกรณีของฉันฉันเพิ่งได้รับการอัปเดตสตูดิโอ


2

ตกลงมีอีกหนึ่งตัวอย่างของ adb.exe ที่แจกจ่ายด้วย "Lenovo Photo Companion" เพื่อนของฉันมีโน้ตบุ๊ก Lenovo Yoga และได้ติดตั้งซอฟต์แวร์นี้ซึ่งรวม adb.exe อื่นไว้ด้วย

การยกเลิกการติดตั้งจะช่วยแก้ปัญหาได้


2

ระบบปฏิบัติการ: Ubuntu

มี adb มากกว่า 1 ตัวกำลังทำงานอยู่ ตรวจสอบ adb ปัจจุบัน:

    which adb
    Expected Output : ANDROID_SDK/platform-tools/adb

โดยปกติผลลัพธ์จะเป็น:

    /usr/bin/adb

ลบเวอร์ชันเก่ากว่านี้โดย:

    cd /urs/bin
    sudo rm adb

1

คุณลองใช้ SDK เวอร์ชัน 8 เนื่องจากอุปกรณ์อยู่ใน 2.2 และ SDK ของคุณอยู่ที่ 10 อาจมีข้อขัดแย้ง

ขอให้โชคดีกับความพยายามในการลดระดับ !! หวังว่าจะแก้ปัญหานี้


1

หากอุปกรณ์ที่คุณพยายามติดต่อด้วยเป็นโทรศัพท์จริงที่เชื่อมต่อผ่าน USB คุณสามารถถอดปลั๊กแล้วเสียบกลับและควรใช้งานได้ บางครั้งมันก็หลุดพ้นไปแล้วฉันก็คิดว่า


1

ฉันมีปัญหานี้กับหนึ่งในเครื่องที่กำลังพัฒนาของฉัน (ทุก windows ที่รัน 7 x 64) ในขณะที่ adb ของเครื่องอื่นทำงานได้ตามปกติ เหตุผลที่ฉันพบปัญหานี้คือฉันมีadb.exeรุ่นเก่าอยู่ใน% android-sdk% \ toolsขณะที่ SDK Android รุ่นใหม่มี adb.exe ภายใต้% android-sdk% \ platform-tools

ลบ adb.exe ที่เก่ากว่าออกจาก% android-sdk% \ tools และเพิ่ม% android-sdk% \ platform-tools ไปที่% PATH% แก้ปัญหานี้

หรือมากกว่าโดยทั่วไปให้ค้นหา adb ที่สามารถใช้งานได้ในพา ธ ของคุณที่ล้าสมัยเพียงแค่ใช้เวอร์ชันล่าสุดที่มาพร้อมกับ Android SDK


1

ฉันทำตามคำตอบทั้งหมดของ SO และมันก็ไม่ได้ผลสำหรับฉัน เมื่อฉันฆ่ากระบวนการ adb.exe จากที่ Task Manager, มันยังคงเปิดมันและเหตุผลก็คือว่าDroid Explorer ที่กำลังทำงานอยู่ในพื้นหลัง

การฆ่ากระบวนการ DE ผ่านตัวจัดการงานแล้วฆ่า adb.exe (และเรียกใช้อีกครั้งจากคอนโซลผ่าน 'adb start-server' ที่ใช้งานได้สำหรับฉัน

นี้จะมีประโยชน์สำหรับหลาย ๆคนที่ได้ฝังรากอุปกรณ์ของพวกเขา


นี่คือทางออกสำหรับฉัน ตรวจสอบให้แน่ใจว่าEnd process treeใน Task Manager สำหรับบริการ Droid Explorer
Jason

1

น่าเสียดายที่ฉันยังไม่มีชื่อเสียงพอที่จะแสดงความคิดเห็น แต่คำตอบที่ทำเครื่องหมายว่าเป็นคำตอบส่งฉันไปในทิศทางที่ถูกต้อง

ฉันไม่เห็นสิ่งใดในเส้นทางที่เกี่ยวข้องกับ HTC Sync Manager แม้ว่าฉันได้ติดตั้งแล้ว ฉันไม่ได้ทำงานกับอุปกรณ์ HTC ในขณะนี้และมีการติดตั้งตัวจัดการการซิงค์เท่านั้นเพื่อช่วยแก้ไขปัญหาไดรเวอร์ เมื่อถอนการติดตั้งตัวจัดการซิงค์ HTC ปัญหานี้ก็หายไปสำหรับฉัน

หวังว่านี่จะช่วยคนอื่นได้


1

ในกรณีของฉันปัญหาเกิดจาก Virtuous Ten Studio ซึ่งมี adb.exe ในExternal/ADBไดเรกทอรี

ไปที่นั่นและวิ่ง.\adb.exe kill-serverและคุณจะดี


1

สิ่งนี้เกิดขึ้นในกรณีของฉันโดยการเรียกใช้ Visual Studio ด้วยโครงการ Android Xamarin บนเครื่องเดียวกับ Android Studio - IDE แต่ละตัวมีเซิร์ฟเวอร์ adb รุ่นต่าง ๆ ที่ทำงานอยู่ ฉันปิด Visual Studio และข้อผิดพลาดหายไป


0

ดังกล่าวข้างต้นปัญหาเกิดขึ้นเนื่องจากadb.exe ที่มาพร้อมกับ HTC Sync เวอร์ชันที่ขัดแย้งกัน การลบออกจาก PATH จะไม่ช่วยได้เนื่องจากhtcUPCTLoader.exeที่ทำงานในพื้นหลังอย่างต่อเนื่องจะยังคงเปิดตัว ADB รุ่นที่ไม่ถูกต้องอีกครั้ง

ทางออกหนึ่งคือการลบadb.exeออกจากโฟลเดอร์ HTC Sync อย่างสมบูรณ์แต่สิ่งนี้จะทำให้ HTC Sync เสียหาย

ฉันเพิ่งเขียนโค้ดเครื่องมือง่ายๆที่แทนที่adb.exeเก่าด้วย stub ที่เรียกใช้adb.exeล่าสุดจากไดเรกทอรี SDK กำจัดความขัดแย้ง (เช่นรุ่น 1.0.25 ที่มาพร้อมกับ HTC Sync และ 1.0.29 กับ Android SDK) .

เครื่องมือ ADB Fixer

เครื่องมือสามารถดาวน์โหลดได้จากhttp://visualgdb.com/adbfix


0

ฉันยังมีปัญหานี้ในวันนี้ปรากฎว่าฉันปิดการใช้งานไดรเวอร์เครือข่ายของฉันเพราะฉันมีปัญหา WIFI / LAN การเปิดใช้งานอีกครั้งสามารถแก้ไขปัญหาได้


0

การติดตั้งการอัพเดท SDK (รวมถึงเครื่องมือแพลตฟอร์ม) ได้รับการแก้ไขสำหรับฉัน!


0

เนื่องจากเซิร์ฟเวอร์ adb ล้าสมัย killตอนนี้เป็นดักของปัญหานี้แล้ว, copy-paste ของโซลูชันสำหรับระบบที่ใช้ Debian :

อาจเป็นเพราะคุณติดตั้งadbแพคเกจเพิ่มเติมจาก SDK ในกรณีนั้นก

sudo apt purge adb

อาจแก้ปัญหาได้

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