android - شرح - download adb for windows-adb shell




كيف يمكنني الاتصال بـ Android باستخدام ADB عبر TCP؟ (20)

أحاول تصحيح تطبيق على Motorola Droid ، ولكن أواجه بعض الصعوبة في الاتصال بالجهاز عبر USB. خادم التطوير الخاص بي هو Windows 7 64 بت VM يعمل في Hyper-V ، ولذا لا يمكنني الاتصال مباشرة عبر USB في الضيف أو من المضيف.

لقد قمت بتثبيت حلقتين مختلفتين من TCP-over-TCP ، ولكن يبدو أن الاتصال به مشاكل منذ تقارير جهاز ADB "فشل devicemonitor في بدء المراقبة" بشكل متكرر. هل هناك طريقة للاتصال مباشرة من العميل على جهاز التطوير إلى البرنامج على الجهاز باستخدام الشبكة بدلاً من اتصال USB أو ربما خيارات أخرى قابلة للتطبيق؟


الخطوة 1.

تأكد من أن كل من جهاز الكمبيوتر المضيف وجهاز Adb المضيف على شبكة Wifi نفسها.

الخطوة 2.

قم بتوصيل جهاز Android بالكمبيوتر باستخدام كابل USB الخاص بك. بمجرد قيامك بذلك ، سيكتشف الكمبيوتر المضيف جهازك وسيبدأ تشغيل adb في وضع USB على الكمبيوتر. يمكنك التحقق من الأجهزة المرفقة بأجهزة adb devices بينما تضمن تشغيل adb في وضع USB من خلال تنفيذ adb usb .

$ adb usb
restarting in USB mode
$ adb devices
List of devices attached
ZX1D63HX9R  device


الخطوه 3.

أعد تشغيل adb في وضع tcpip باستخدام هذا الأمر:

$ adb tcpip 5556
restarting in TCP mode port: 5556


الخطوة 4.

تعرف على عنوان IP الخاص بجهاز Android. هناك عدة طرق للقيام بذلك:

  • WAY: 1 انتقل إلى الإعدادات -> حول الهاتف / الجهاز اللوحي -> الحالة -> عنوان IP.
  • WAY: 2 انتقل إلى قائمة شبكات Wi-fi المتاحة. الشخص الذي تتصل به ، انقر فوق ذلك والتعرف على IP الخاص بك.
  • الطريقة: 3 جرب $ adb shell netcfg .

الآن بعد معرفة عنوان IP لجهازك ، يمكنك توصيل مضيف Adb الخاص بك به.

$ adb connect 192.168.0.102:5556
already connected to 192.168.0.102:5556
$ adb devices
List of devices attached
ZX1D63HX9R  device
192.168.0.102:5556  device


الخطوة 5.

قم بإزالة كابل USB ويجب أن تكون متصلاً بجهازك. إذا كنت لا تراها في adb devices بإعادة الاتصال باستخدام أمر الخطوة السابقة:

$ adb connect 192.168.0.102:5556
connected to 192.168.0.102:5556
$ adb devices
List of devices attached
192.168.0.102:5556  device

إما أن تكون جاهزًا للذهاب الآن أو ستحتاج إلى قتل خادم adb الخاص بك عن طريق تنفيذ adb kill-server والانتقال من خلال جميع الخطوات مرة أخرى مرة أخرى.

امل ان يساعد!


مرجع:


من جهاز كمبيوتر على جهاز غير الجذر

(لاحظ أنه يمكن القيام بذلك باستخدام جهاز متجذر أيضًا ، ولكن يمكنك استخدام shell على جهاز متجذر لا يتطلب اتصال USB)

أولا ، فتح موجه الأوامر (كمد). إذا كنت تستخدم Android Studio أو IntelliJ ، فستجد وحدة تحكم مضمّنة هناك يمكنك استخدامها.

إذا أمكن ، افتح موقع SDK ، وانقر بزر الماوس الأيمن ، ثم اضغط على "start prompt prompt here". ليس كل هذا لديه هذا الخيار لذلك عليك القيام بذلك (/ هذه) الأوامر أيضا:

تغيير محرك الأقراص (إن وجد)

D: 

والوصول إلى أدوات sdk ومنصة. استبدل هذا المسار بموقع SDK:

D:/sdk/path/here/platform-tools

أصبح بإمكانك الآن الوصول إلى جسر تصحيح الأخطاء في Android.

الآن ، مع توصيل الجهاز بالكمبيوتر ، قم بما يلي:

adb tcpip <port> 
adb connect <ip>:<port>

أين يوجد المنفذ الذي تريد الاتصال به (الافتراضي هو 5555 ) وهو IP الخاص بالجهاز الذي تريد الاتصال به.

يرجى ملاحظة: 5555 هو المنفذ الافتراضي والكتابة فقط عنوان IP يربطها. إذا كنت تستخدم منفذًا مخصصًا ، فيمكنك على الأقل تحسين الأمان قليلاً. يمكن إساءة استخدام تصحيح أخطاء USB عبر شبكة Wi-Fi ، ولكن فقط إذا كان الجهاز متصلاً بالكمبيوتر الذي يريد إساءة استخدام الجهاز. يؤدي استخدام منفذ غير افتراضي على الأقل إلى صعوبة الاتصال.

إذا كنت تستخدم منفذًا مخصصًا ، فتأكد من إضافته بعد بروتوكول الإنترنت. الكتابة لا يوجد منفذ يتصل 5555 وإذا لم تستخدم ذلك سوف تفشل الاتصال.

يمكنك العثور على عنوان IP الخاص بالجهاز بطريقتين:

  • بناءً على جهازك ، قد تختلف الأسماء المحددة. افتح الإعدادات وانتقل إلى حول الجهاز -> الحالة -> عنوان IP

  • استخدم ADB للحصول على IP

من وحدة التحكم ، قم بما يلي:

adb shell ip -f inet addr show wlan0

وبمجرد الانتهاء من الاتصال ، يمكنك فصل الجهاز من جهاز الكمبيوتر عن طريق القيام بما يلي:

adb disconnect <ip>:<port>

أو لا يوجد IP لفصل جميع الأجهزة. إذا كنت تستخدم منفذًا مخصصًا ، فيجب عليك تحديد المنفذ الذي تريد قطع الاتصال به . الافتراضي هو 5555 هنا أيضا.

لتعطيل المنفذ (إذا كان ذلك أمرًا تريد القيام به) ، يمكنك إجراء هذا الأمر مع الجهاز المتصل:

adb usb

أو يمكنك إعادة تشغيل الجهاز لإزالة اتصال tcpip

من جهاز كمبيوتر على جهاز متجذر

أولا ، تحتاج إلى الوصول إلى قذيفة. إما أن تقوم بتوصيل الجهاز باستخدام كبل USB واستخدام adb shell adb أو تنزيل تطبيق من Google Play أو FDroid أو أي مصدر آخر.

ثم تفعل:

su
setprop service.adb.tcp.port <port>
stop adbd
start adbd

ولتوصيل الجهاز ، فإنك تفعل ما تفعله في النسخة غير الجذور من خلال adb connect <ip>:<port> .

وإذا كنت تريد تعطيل المنفذ والعودة إلى الاستماع إلى USB:

setprop service.adb.tcp.port -1
stop adbd
start adbd

يمكنك أيضًا استخدام المكون الإضافي لـ Android Studio لتنفيذ ذلك نيابةً عنك (لا تتذكر الاسم الآن) ، وبالنسبة إلى المستخدمين المتجذرين ، هناك أيضًا خيار تنزيل تطبيق Android لإعداد اتصال الهاتف (ربما لا يزال الاتصال adb مطلوبًا ).

تحتوي بعض الهواتف على إعداد في خيارات المطور (ينطبق ذلك على بعض الهواتف غير المموَّلة ، على الرغم من وجود بعض الهواتف الجذرية أيضًا) التي تتيح تبديل ADB عبر wifi من الجهاز نفسه دون الجذر أو اتصال الكمبيوتر لبدء تشغيله. على الرغم من وجود عدد قليل من الهواتف التي لديها ذلك


  1. قم بتوصيل الجهاز عبر USB وتأكد من عمل تصحيح الأخطاء ، ثم قم بتشغيل:

    adb tcpip 5555
    adb connect <DEVICE_IP_ADDRESS>:5555
    
  2. افصل USB ومتابعة التصحيح اللاسلكي.

  3. عندما تنتهي من ذلك وتريد التبديل إلى تصحيح أخطاء USB ، قم بتشغيل:

    adb -s <DEVICE_IP_ADDRESS>:5555
    

للعثور على عنوان IP لجهازك ، انتقل إلى Settings > Wi-Fi > Advanced > IP Address على جهازك أو قم بتشغيل adb shell netcfg .

لا الجذر المطلوب. يمكن تصحيح أحد الأجهزة فقط في كل مرة.

انظر هذا المنصب XDA .

يوجد أمر adb في مجلد platform-tools في Android SDK.


أجد الإجابات الأخرى مربكة. أبسط بكثير لاستخدام adbWireless:

http://ppareit.github.com/AdbConnect/

ما عليك سوى تثبيت تطبيق على هاتفك لتبديل تصحيح الأخطاء عبر wifi ، وتثبيت مكون كسوف إضافي والانتهاء من ذلك.


إذا كنت تريد توصيل جهازك بسهولة لتشغيل تطبيقات Android أو تصحيحها أو نشرها عبر WiFi ، فيمكنك استخدام برنامج IntelliJ Plugin مفتوح المصدر قمت بتطويره. Here هو رمز here البرنامج المساعد على استعداد لاستخدامها.

الاستخدام بسيط للغاية. هنا لديك gif:


استخدم تطبيق adbwireless لتمكين الهاتف ، ثم استخدم adb الاتصال من جهاز Windows للتحدث إليه. يخبرك تطبيق adbwireless على الهاتف بكيفية الاتصال به ، مع إعطاء عنوان IP وكل شيء.

والبديل الأقل متعة هو الاتصال عبر USB ، وإخبار الهاتف باستخدام TCPIP عبر adb tcpip 5555 ، ثم فصل USB ، ثم استخدام adb connect. هذا الأمر أصعب بكثير لأنك تحتاج إلى معرفة عنوان IP الخاص بهاتفك بنفسك (adbwireless يخبرك بالبروتوكول IP) ، عليك الاتصال عبر USB ، وعليك تشغيل adb tcpip (adbwireless يعتني بذلك أيضًا).

لذلك: قم بتثبيت adbwireless على هاتفك. استخدمها. من الممكن ، أفعل ذلك بشكل روتيني على لينكس وعلى نظام التشغيل Windows.


على نظامي ذهب مثل هذا:

على جهاز Android في shell Linux ، لم يعطيني "ifconfig" بسيطًا عنوان IP الخاص بي. اضطررت الى كتابة:

ifconfig eth0

-أو-

netcfg

للحصول على عنوان IP الخاص بي. (عرفت أن eth0 تم تكوينه لأنني رأيت ذلك في dmesg الخاص بي.) ثم قمت بما يلي:

setprop service.adb.tcp.port -1

وقف adbd

بدء adbd

ثم على مربع Win7 بلدي (واحد يعمل Eclipse 3.7.1). فتحت موجه الأوامر إلى

\ الروبوت SDK \ منصة أدوات>

دون تشغيل كمسؤول. ثم فعلت

adb connect 12.345.678.90

لم أضع مرفأ أبداً إذا فعلت

adb tcpip 5555

قال أنه لا يمكن العثور على الجهاز ثم لم يظهر أي شيء في قائمة "أجهزة adb" الخاصة بي. أي أنها تعمل فقط إذا لم أفعل الأمر tcpip أعلاه.

يمكنني عمل "قذيفة adb" وفوضى مع جهاز Android الخاص بي. ولكن جهاز Android الخاص بي لا يظهر في علامة التبويب Run-> Run Configurations-> Target في الوقت الحالي. من ناحية أخرى ، إذا كنت أحتفظ بعلامة التبويب الهدف على تلقائي. عند تشغيل تطبيقي عبر Run-> تشغيله ، يتم تشغيله على جهازي الذي يعمل بنظام التشغيل Android بالرغم من أن جهاز Android الخاص بي لم يتم إدراجه حتى كأحد أهدافي.


في ما يلي امتداد لإجابة Brian باستخدام البلوتوث:

  1. على نظام التشغيل Linux ، استخدم Blueman لمشاركة إنترنت الكمبيوتر الشخصي مع جهازك عبر Bluetooth:

    $ sudo apt-get install blueman
    $ blueman-manager
    Pair them: Search devices after enabling Bluetooth
    on your phone and making it visible
    $ blueman-services
    Network > [X] Network Access Point (NAP)
    Your Phone > Settings > Bluetooth > Paired Device > [X] Internet access
    
  2. استخدم شبكة Bluetooth لأوامر ADB:

    $ adb tcpip 5555
    $ adb connect $(adb shell ip -f inet addr show bt-pan | egrep -o '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | head -n1):5555
    

بمجرد الانتهاء من العودة إلى وضع USB:

$ adb disconnect
$ adb usb

ملاحظة: يمكن أن يصل بلوتوث 3.0 و 4.0 إلى 24 ميغابت / ثانية .


كما قال بريان:

وفقا لمقالة على مطوري xda ، يمكنك تمكين ADB عبر واي فاي من الجهاز مع الأوامر

setprop service.adb.tcp.port 5555

وقف adbd

بدء adbd

ويمكنك تعطيله وإعادة ADB إلى الاستماع على USB مع

setprop service.adb.tcp.port -1

وقف adbd

بدء adbd

إذا كان لديك وصول USB بالفعل ، فمن الأسهل التبديل إلى استخدام WiFi. من سطر الأوامر على الكمبيوتر الذي يحتوي على الجهاز المتصل عبر USB ، قم بإصدار الأوامر

adb tcpip 5555

adb تواصل 192.168.0.101:5555

لمعرفة عودة ADB الخفي للاستماع عبر USB

adb usb

هناك أيضًا العديد من التطبيقات على Android Market التي تعمل على أتمتة هذه العملية.

أنت فقط تحتاج إلى الوصول إلى قذيفة الروبوت واكتب هذه الأوامر ...

أحد الحلول الأخرى (الأسهل) في السوق: adbWireless ، سيعمل تلقائياً على ضبط هاتفك.

الجذر مطلوب! على حد سواء ...


كنت بحاجة للحصول على كل من USB و TCPIP للعمل مع ADB (لا تسأل) ، لذلك قمت بما يلي (باستخدام التوجيهات التي قام الآخرون بنشرها من مطوري xda)

باستخدام adb shell :

su
#Set the port number for adbd
setprop service.adb.tcp.port 5555

#Run the adbd daemon *again* instead of doing stop/start, so there
#are two instances of adbd running.
adbd &

#Set the port back to USB, so the next time ADB is started it's
#on USB again.
setprop service.adb.tcp.port -1

exit

لتوصيل جهازك اللوحي باستخدام منفذ TCP. تأكد من اتصال النظام والجهاز بنفس الشبكة.

  1. افتح وحدة التحكم cmd.exe
  2. اكتب adb tcpip 5555
  3. انتقل إلى النظام -> خيار التطوير -> تصحيح أخطاء USB -> قم بإلغاء تحديده من أجل اتصال TCPIP
  4. اكتب adb connect 192.168.1.2 this is your device IP address
  5. متصل بـ 192.168.1.2

متصل باستخدام المنفذ إلى الأمام حاول تنفيذ إعادة توجيه المنفذ ،

adb forward tcp: <PC port> tcp: <device port>

مثل:

adb forward tcp: 5555 tcp: 5555.

C: \ Users \ abc> adb forward tcp: 7612 tcp: 7612

C: \ Users \ abc> adb tcpip 7612 إعادة التشغيل في منفذ وضع TCP: 7612

C: \ Users \ abc> adb connect 10.0.0.1:7612

متصل بـ 10.0.0.1:7612

إذا تلقيت رسالة خطأ: الجهاز غير موجود وصل جهاز USB إلى النظام ثم اتبع نفس الإجراء.
لجهاز متجذر

setprop service.adb.tcp.port 5555
stop adbd
start adbd

لقد حصلت على هذا العمل. لم تستخدم أي كابل USB.

  • التطبيق ADB اللاسلكية.
  • شغلها. سيؤدي ذلك إلى تعيين الملكية الفكرية والمنفذ ؛ ثم في دوس

    cd C:\Program Files\Android\android-sdk\platform-tools adb connect "192.168.2.22:8000 "enter"
    

متصلة.


للتبديل بين أوضاع TCP و USB بأمر واحد ، يمكنك إضافة هذا إلى /init.rc :

on property:service.adb.tcp.port=*
    restart adbd

on property:service.adb.tcp.enable=1
    setprop service.adb.tcp.port 5555

on property:service.adb.tcp.enable=0
    setprop service.adb.tcp.port -1

والآن يمكنك استخدام خاصية property.adb.tcp.enable لتمكين أو تعطيل الاستماع على المنفذ 5555. قم بتشغيل netstat للتحقق مما إذا كان الاستماع. كما ترى ، سيظهر أيضًا إذا كنت ترغب في تغيير service.adb.tcp.port يدويًا.


ما عليك القيام به الأشياء التالية:

  • أولاً ، أضف ADB إلى مسار البيئة الخاص بك.
  • من نوع CLI ، اتصل هذا adb YOUR_DEVICE_IP: PORT_NUMBER (مثال adb connect 192.168.100.100:5555 )

من adb --help :

connect <host>:<port>         - Connect to a device via TCP/IP

هذا خيار سطر أوامر بالمناسبة.

ينبغي عليك محاولة توصيل الهاتف بشبكة Wi-Fi الخاصة بك ، ومن ثم الحصول على عنوان IP الخاص به من الموجه. لن يعمل على شبكة الخلايا.

الميناء هو 5554.


هذا بسيط حقا إذا كان هاتفك متجذرًا.

قم بتنزيل محاكي طرفية من Google Play (هناك الكثير مجانية). تأكد من اتصال جهاز Android بشبكة Wi-Fi والحصول على عنوان IP لشبكة Wi-Fi . افتح البرنامج الطرفي واكتب:

su
setprop service.adb.tcp.port 5555
stop adbd
start adbd

الآن انتقل إلى جهاز الكمبيوتر الخاص بك (على افتراض أنك تستخدم Windows) وإنشاء اختصار على سطح المكتب لـ "cmd.exe" (بدون الاقتباسات).

انقر بزر الماوس الأيمن على اختصار cmd واختر "Run as Administrator"

التغيير إلى مجلد android-sdk-windows\tools الخاص بك

اكتب:

adb connect ***wifi.ip.address***:5555

(example: adb connect 192.168.0.105:5555)

يجب أن يقول adb الآن أنك متصل.

ملاحظة: إذا كنت سريعًا جدًا لإعطاء أمر الاتصال فقد يفشل. جرب ما لا يقل عن مرتين خمس ثوان قبل أن تقول أن هذا لا يعمل.


يمكن adb التواصل مع خادم adb عبر tcp socket. يمكنك التحقق من ذلك عن طريق telnet.

$ telnet 127.0.0.1 5037
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
000chost:version
OKAY00040020

عموما ، الأمر له التنسيق %04x%s with <message.length><msg> ما يلي هو الأمر الساحر لأمر الأوامر يرسل أمر add cmd ضد tcp socket socket

def send_to_adb(socket, cmd)
  socket.printf("%04x%s", cmd.length, cmd)
end

يرسل المثال الأول host:version الأمر host:version الذي يبلغ طوله 12 ( 000c في سداسي عشرية). يمكنك التمتع بأمر أكثر إثارة مثل framebuffer: الذي يأخذ لقطة شاشة من framebuffer كما يمكنك تخمين من اسمه.


يمكنك أيضًا استخدام إعادة توجيه المنفذ المحلي لـ SSH. لكنه لا يزال ينطوي على كابل USB. قم بتوصيل هاتفك باستخدام USB إلى جهاز كمبيوتر (مضيف) مع تشغيل sshd. على جهاز كمبيوتر عن بعد (ضيف) بدء تشغيل عميل SSH قادر على portforwarding / tunneling. مثال:

plink -L 5037:localhost:5037 <host_IP_address>

أستخدم هذا البناء لتوصيل جهازي بجهاز ظاهري. لم يكن Elmima USB إلى Ethernet ثابتًا بما فيه الكفاية (المهلات أثناء التصحيح).

تعمل نفق SSH مجانا وأكثر موثوقية.


لمستخدمي الكمبيوتر الشخصي:

الخطوة 1:
يجب عليك تمكين خيارات المطور في هاتف Android الخاص بك.
يمكنك تمكين خيارات المطور باستخدام هذه الطريقة.
• افتح الإعدادات> حول> معلومات البرامج> المزيد.
• ثم اضغط على "رقم البناء" سبع مرات لتمكين خيارات المطور.
• ارجع إلى قائمة الإعدادات وستتمكن الآن من رؤية "خيارات المطورين" هناك.
• اضغط عليه وقم بتشغيل تصحيح أخطاء USB من القائمة الموجودة على الشاشة التالية.

الخطوة 2:

افتح cmd واكتب adb.
إذا وجدت أن adb ليس أمرًا صالحًا ، فيجب عليك إضافة مسار إلى متغير البيئة.

• انتقل أولاً إلى مجلد SDK المثبت
اتبع هذا المسار وهذا المسار هو مجرد مثال. D: \ برامج \ تنمية \ Andoird \ SDK \ SDK \ منصة أدوات \؛ D: \ برامج \ تنمية \ Andoird \ SDK \ SDK \ الأدوات؛
• الآن البحث في إعداد نظام ويندوز المتقدمة

افتح متغير البيئة.

ثم فتح المسار ولصق المسار التالي هذا مثال.
يختلف مسار SDK عن العمل ، لذا يرجى استخدام موقعك. D: \ برامج \ تنمية \ Andoird \ SDK \ SDK \ منصة أدوات \؛
D: \ برامج \ تنمية \ Andoird \ SDK \ SDK \ الأدوات؛

الخطوه 3:

افتح cmd واكتب adb. إذا كنت لا تزال ترى أن adb ليس أمرًا صالحًا ، فهذا يعني أن المسار لم يضبط بشكل صحيح الخطوات المذكورة أعلاه.

الآن يمكنك توصيل هاتف Android بجهاز الكمبيوتر.

افتح cmd ونوع الأجهزة adb ويمكنك رؤية جهازك. تجد لك عنوان IP الهاتف.

النوع: - adb tcpip 5555

احصل على عنوان IP الخاص بهاتفك

adb shell netcfg

الآن،

adb connect "IP address of your phone"

الآن تشغيل مشروع الروبوت الخاص بك وإذا لم أراك الجهاز ثم اكتب مرة أخرى ADB قم بتوصيل عنوان IP الخاص بهاتفك

بالنسبة لمستخدمي Linux و MAC :

الخطوة 1: فتح المحطة الطرفية وتثبيت adb باستخدام

sudo apt-get install android-tools-adb android-tools-fastboot

قم بتوصيل هاتفك عبر كابل USB إلى جهاز الكمبيوتر. اكتب الأمر التالي في المحطة

adb tcpip 5555

باستخدام adb ، عليك بتوصيل عنوان IP لجهاز Android.

أزل هاتفك.


If you want to be able to do it on a button click then:

  1. In Android Studio -> Settings/Preferences -> Plugins -> Browse Repositories
  2. Search 'ADB wifi'
  3. Install and restart android studio
  4. Connect your device (with USB Debugging enabled) to your computer with USB (you will need to do this just once per session)
  5. أدوات -> Android -> ADB WIFI -> ADB USB TO WIFI (أو استخدم مجموعة المفاتيح المذكورة. بالنسبة لنظام MacOS: ctrl + shift + w)

ملاحظة: إذا لم يعمل:

  1. قد يكون جدار الحماية الخاص بجهاز wifi يحظر الاتصال.
  2. قد لا يتم تثبيت ABD على جهاز الكمبيوتر الخاص بك.




adb