A. android手機與pc通訊
Android手機和PC通信,即USB的通信支持有兩種模式:
HOST模式:Android設備為USB匯流排和外設供電,數據傳輸是雙向的。
Accessory模式:即附件模式,Android作為附件,手機和電腦連接,通常是這種模式,由USB Device端向匯流排供電,數據傳輸方向是雙向的。這就是為什麼手機插到電腦上可以充電的原因。
在討論具體代碼之前,需要先講一下再host模式下面的調試辦法,因為數據線的埠被外設使用了,那麼,傳統的連接數據線調試的方法已經不行了。官網給出了解決辦法:
1、請把Android設備用數據線連接到電腦,當然,也要把Android設備的wifi打開。
2、在windows命令行下,進入SDKplatform-tools/目錄(具體看SDK安裝在哪個目錄了),執行adb tcpip 5555回車。這里其實是打開了adb調試的無線埠(Android設備在電腦上的埠映射),其實後面的數字可以隨便來,只要埠沒有被佔用。
3、adb connect <device-ip-address>:5555鍵入回車,這里的device-ip-address是Android端的IP地址。
4、最後adb usb回車,假如沒有問題,現在已經可以在eclipse上看到logcat的輸出了。
其實還有個簡單的辦法,可以在應用商店上下一個無線ADB工具,隨便哪個都可以,這類工具就是在Android端做了上面的那些工作,而且還不用連數據線,但是第三步的那個操作還是要在windows的命令行窗口手動輸入的。
B. 如何用adb連接android手機
方法一:::手機打開開發者模式 勾選usb調試 在你開發工具的ddms下 就有連上你手機了 或者下載豌豆莢這種,會自動鏈接電腦 再打開ddms就有adb
fang2
adb是什麼呢? 我就不多說了, 對於搞Android開發的人來說, 一定不陌生。 本文講述如何用adb來連接手機。
利用adb來連接手機, 有兩種方式: 1, wifi, 2, usb.
前提條件: 下載adb, 最好把對應的文件置於cmd.exe同目錄下。
1. 通過wifi, 利用adb來連接手機。
在pc的cmd中輸入命令:
adb connect 192.168.1.100
其中adb就是手機的ip. 如果連接成功, 就可以進入android的shell了。
我自己在操作過程中, pc能ping通過手機, 但是adb連接手機, 出現了一點點問題, 提示unable to connect to 192.168.1.100:5555, 這個是什麼原因呢? 原來手機的默認adb服務是沒有打開的, 否則, 別人adb能隨便連, 那豈不是很不安全么? 所以, 我們要想辦法把手機上的adb服務打開。 怎麼搞呢? 首先要在手機上下載一個android模擬器(當然, 如果你有, 就不用下載了), 然後切到root許可權, 並執行如下命令打開adb服務:
su
setprop service.adb.tcp.port 5555
stop adbd
start adbd
然後adb就可以連接手機了, 如圖:
2. 通過usb, 利用adb來連接手機。
我把手機通過usb接上pc, 結果adb並沒有連接上手機, 於是下載了android驅動程序, 安裝了, 就好了。這樣, adb就連接上了手機, 開心啊。於是就可以利用adb shell進入手機的android系統了。 附上圖, 紀念一下:
比較一下: 方法1的要求較高, 需要依賴於穩定的網路, 而且操作麻煩, 方法2就簡便多了。
一旦adb登錄後, 就可以切換到root下, 不要密碼啊, 我進入shell後, 執行reboot, 結果手機機關機了。 好吧, 我承認, 我是有激動了。
C. linux驅動與設備節點簡介 & Android內核與Linux內核的區別
驅動是內核的一部分,作為直接訪問物理硬體的一個軟體層,用於應用程序與物理硬體設備通信。內核包含多種驅動,如WIFI、USB、Audio、藍牙、相機、顯示驅動。
(1)設備驅動程序三類:字元設備驅動程序、塊設備驅動程序、網路設備驅動程序;
(2)對應Linux三類設備:字元設備、塊設備、網路設備;
(3)常見字元設備:滑鼠、鍵盤、串口、控制台等;
(4)常見塊設備:各種硬碟、flash磁碟、RAM磁碟等;
(5)網路設備(網路介面):eth0、eth1,註:網路設備沒有設備節點,應用程序通過Socket訪問網路設備。由於網路設備面向報文,較難實現相關read、write等文件讀寫函數,所以驅動的實現也與字元設備和塊設備不同。
Linux使用對文件一樣的管理方式來管理設備,所有設備都以文件的形式存放在/dev目錄下,系統中的每個字元設備或者塊設備都必須為其創建一個設備文件,它包含了該設備的設備類型(塊設備或字元設備)、設備號(主設備號和次設備號)以及設備訪問控制屬性等。設備節點通過 mknod 命令創建,也可以由Udev用戶工具軟體在系統啟動後根據/sys目錄下每個設備的實際信息創建,使用後一種方式可以為每個設備動態分配設備號。
Linux中設備節點通過「mknod」命令創建,創建時需要指定主設備號和次設備號,即指定對應的驅動程序和對應的物理設備(訪問設備節點時就相當於通過其設備號訪問驅動程序進而間接訪問到物理設備)。主設備號用來區分不同種類的設備,而次設備號用來區分同一類型的多個設備。對於常用設備,Linux有約定俗成的編號,如硬碟的主設備號是3
理解:應用程序通過訪問設備節點讀取主設備號和次設備號,通過主設備號找對應的驅動,通過次設備號對應到具體物理設備。註:1個驅動對應一類設備,並用唯一主設備號標識。
Linux支持的各種設備的主設備號定義在include/linux/major.h文件中,已經在官方注冊的主設備號和次設備號在Documentation/devices.txt文件中。
Android系統最底層是Linux,並且在中間加上了一個Dalvik / ART的Java虛擬機,從表面層看是Android運行庫。每個Android應用都運行在自己的進程上,享有Dalvik / ART虛擬機為它分配的專有實例,並支持多個虛擬機在同一設備上高效運行,虛擬機執行的是專有格式的可執行文件(.dex) - 該格式經過優化,以將內存好用降到最低。
Android內核和Linux內核的差別主要體現在如下11個方面:
D. Android真機調試連接伺服器時出現問題怎麼解決
方法如下:
1、較新版本的Android系統默認在設置是不顯示開發人員選項的,因此進入設置->關於手機->多次點擊版本號(一定次數之後設置中出現開發人員選項),開發人員選擇出現之後就無需再設置了。
2、設置->開發人員選項(開啟)->選擇USB調試,之後一般會出現允許連接調試和安裝調試證書的選項,都選擇是。大部分情況下到這個時候Eclipse開發環境就能夠識別手機並可以進行軟體的編譯下載安裝與調試。
3、USB連接方式需要選擇正確,如下圖四個選項中,只有選中PC助手方式,才可以被電腦和開發環境識別。
6、還有Eclipse開發環境通過adb連接調試Android設備,有一些刷機軟體也會運行adb程序,造成與開發環境的adb調試器沖突,需要關閉刷機軟體,殺死所有adb進程重啟開發環境。
E. 如何用adb連接android手機
(1)首先先用usb線連接android手機,然後輸入指令:adb tcpip,埠號默認為5555。
(5)androidsocketusb擴展閱讀
adb是androidsdk里的一個工具, 用這個工具可以直接操作管理android模擬器或者真實的andriod設備(如G1手機). 它的主要功能有:
1、運行設備的shell(命令行)。
2、管理模擬器或設備的埠映射。
3、計算機和設備之間上傳/下載文件。
3、將本地apk軟體安裝至模擬器或android設備
ADB是一個客戶端-伺服器端 程序, 其中客戶端是你用來操作的電腦, 伺服器端是android設備。而ADB驅動就是電腦與android設備的通信的客戶端驅動程序。
F. 【Android】如何使用ADB進行調試
1、adb devices
( 用於查看當前adb連接的設備有哪些,這里目前是無)
(6)androidsocketusb擴展閱讀:
無線使用ADB(Android Debug Bridge)非常的實用,它能夠讓你的手機用無線來取代USB連接,與電腦鏈接起來更加的方便快捷,還可以保護電池。需要root。
還可以進行以下的操作:
1、快速更新設備或手機模擬器中的代碼,如應用或Android系統升級;
2、在設備上運行shell命令;
3、管理設備或手機模擬器上的預定埠;
4、在設備或手機模擬器上復制或粘貼文件;
老玩家對adb這個調試工具肯定不陌生了,不過一般都是用USB連接來玩兒,這次帶來的是用無線進行連接,就太強大了,畢竟usb連接對電池的壽命有一定影響。
G. 我怎樣才能連接與亞行至Android通過TCP
手動處理 從您的設備,如果它是植根 根據對XDA開發後,您可以啟用adb通過WiFi從裝置su
setprop service.adb.tcp.port 5555
stop adbd
start adbd
並且您可以禁用它,並返回亞行與監聽USBsetprop service.adb.tcp.port -1
stop adbd
start adbd
從電腦,如果你有USB連接已經 這是更容易切換無線網路,如果你已經有了USB訪問。從該行已在設備通過USB介面,連接問題adb tcpip 5555
adb connect 192.168.0.101:5555
一定要更換192.168.0.101與實際分配給您的設備的IP地址。 告訴亞行後台程序返回到監聽通過USBadb usb
應用自動化進程 也有在谷歌播放的自動執行此過程的幾個應用程序 CodeGo.net,快速搜索建議adbWireless,支持WiFiadb和adb的WiFi。所有這些都需要root許可權,但adbWireless需要更少的許可權。
2. 這是非常簡單的。 首先確保你的手機是植根。 從市場上下載一個終端模擬器(有很多是free的)。 請確保您的Android連接到您的無線網路,並獲得無線IP地址。 打開終端程序並鍵入:su
setprop service.adb.tcp.port 5555
stop adbd
start adbd
現在去(假設你視窗)在桌面上創建一個快捷方式為「cmd.exe的」(不含引號)。 右鍵單擊CMD快捷方式並選擇"Run as Administrator"改變你的android-sdk-windows\tools folder類型:adb connect ***wifi.ip.address***:5555
(example: adb connect 192.168.0.105:5555)
亞行現在應該說你已連接。 注意:如果你太快給它可能會失敗。所以,如果你說這是行不通的嘗試至少2 5秒鍾的時間間隔。
3. 我知道這是舊的,但我想補充我的2美分- 我需要得到兩個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 2 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
4. 正如布賴恩說: 根據對XDA開發後,您可以啟用adb通過WiFi從裝置 對應setProp service.adb.tcp.port 5555 停止adbd 啟動adbd 並且您可以禁用它,並返回亞行與監聽USB 對應setProp service.adb.tcp.port-1 停止adbd 啟動adbd 如果你有USB連接已經,它是更容易切換無線網路。從該行已在設備通過USB介面,連接問題 亞行TCPIP 5555 ADB連接192.168.0.101:5555 告訴亞行後台程序返回到監聽通過USB 也有在Android Market上的幾個應用程序能自動完成這些過程。 它works.You只需要訪問Android shell,然後輸入 另外一個(容易)解決方案是目前市場上:adbWireless,它會自動設置您的手機。 根是必須的!為...
5. 從adb --helpconnect <host>:<port> - connect to a device via TCP/IP
順便說那行選項。 你應該嘗試將手機連接到你的無線網路,然後得到它的IP從您的路由器,它不會工作,對 埠是5554
6. 您保存的adb路徑到您的Windows路徑 在Android激活調試模式 連接到PC 提示(有管理員右)類型:adb的TCPIP 5555 斷開平板電腦,或從電腦智能手機 提示符下鍵入:ADB連接IPADDRESS(IP地址為您的平板電腦或智能手機的DHCP / IP地址,您可以通過無線網路找到->電流 現在,提示你應該看到類似的結果:連接到xxx.xxx.xxx.xxx:5555
7.adb tcpip 5555
奇怪,但是這只是工作,如果我有USB電纜連接,然後我就可以拔掉,並為它去與一切ADB。 而返回時,adb usb
只會工作連接。 沒關系,如果我發出setprop service.adb.tcp.port 5555
或setprop service.adb.tcp.port -1
然後停止和啟動adbd,我仍然需要電纜或這是行不通的。 所以,如果我的亞行不工作,我敢打賭,我將無法使亞行通過WiFi兩種。
8. 你可以ssh本地埠轉發。但它仍然涉及電纜。 您的USB連接(主機)與一個sshd運行。 在遠程(遊客)個人電腦開始能夠portforwarding /隧道的ssh客戶端端。 例如:砰砰-L 5037:本地主機:5037 這種結構給我的設備連接到虛擬機。 到是不夠穩定(在調試過程中) SSH隧道工程為自由和更可靠。
9. 我不知道如何連接的設備,而在所有的任何一個USB連接,但如果你能,也許在您連接它可以通過發出切換adbd到TCP模式adb tcpip <port>
從終端,從任何PC上通過連接到您的設備通過WiFi:adb connect <ip>:<port>
也許也有可能從該裝置上的終端切換到TCP模式。
10. 我覺得其他的答案就簡單得多了adbWireless: 只需在手機上安裝一個應用程序切換調試通過wifi,安裝一個Eclipse插件,你就大功告成了。
11. 要連接您的TCP埠 請確保您的系統和設備連接到網路 1。打開控制台的cmd.exe 2,型號ADB TCPIP 5555 3。至系統->選項-> USB調試unchek它TCPIP連接 4.type ADB連接192.168.1.2這是您的設備ip地址 5。連接到192.168.1.2 如果你錯誤:未找到設備 連接設備到系統然後按照 為紮根設備 對應setProp service.adb.tcp.port 5555 停止adbd 啟動adbd
12. 在我的系統是這樣的: 我在我的Linux shell中的Android設備,一個簡單的「使用ifconfig」沒有我的IP地址。我只好類型: 用ifconfig eth0 -或- 加上netcfg 讓我的IP地址。 (我知道是eth0的配置,我看到它在我的dmesg)然後我做了: 對應setProp service.adb.tcp.port-1 停止adbd 啟動adbd 然後在我的Win7盒(一個運行Eclipse 3.7.1)。我打開提示 \\ Android的SDK \\平台工具> 沒有以管理員身份運行。然後我做了一個 ADB連接12.345.678.90 我從來沒有把一個埠。如果我做了 亞行TCPIP 5555 它說,它無法找到該設備,然後沒有出現在我的「亞行的設備」列表中。即這只是工作,如果我不這樣做上面。 我可以做一個「亞殼」與我的Android設備。但我的Android設備不現在出現在我的運行->運行配置-> Target選項卡。在另一方面,如果我把目標選項卡設置為自動。後來,當我通過運行我的應用程序運行->運行它並運行我的Android設備上,即使我的Android設備甚至沒有列為我的目標之一。
13. 要使用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
現在你財產service.adb.tcp.enable啟用或禁用偵聽埠5555。運行netstat以檢查它是否在聽。正如你可以看到它也會觸發,如果你想改變service.adb.tcp.port手動。
14. 使用adbwireless應用程序,使手機,亞行從Windows機器連接到它對話。在手機上的應用程序adbwireless告訴你如何連接到它,給人的IP地址和一切。 要少得多有趣的選擇是通過USB進行連接,告訴亞行通過TCPIP 5555手機TCPIP,然後斷開USB,ADB連接。這是更難通過這種方式,你必須找出手機的IP地址,你自己(adbwireless告訴你的IP),你必須通過USB進行連接,你必須運行adb的TCPIP(adbwireless需要的是照顧過)。 所以:在手機上安裝adbwireless。使用它。這是可能的,我這樣做經常在Linux和Windows上。
15. 我放在一起自動啟用和通過TCP連接adb,通過USB連接的設備的批處理文件。有了它,你不必把在IP手動。@echo off
setlocal
REM Use a default env variable to find adb if possible
if NOT "%AndroidSDK%" == "" set PATH=%PATH%;%AndroidSDK%\platform-tools
REM If off is first parameter then we turn off the tcp connection.
if "%1%" == "off" goto off
REM Set vars
set port=%1
set int=%2
if "%port%" == "" set port=5557
if "%int%" == "" set int=wlan0
REM Enable TCP
adb -d wait-for-device tcpip %port%
REM Get IP Address from device
set shellCmd="ip addr show %int% | grep 'inet [0-9]{1,3}(\.[0-9]{1,3}){3}' -oE | grep '[0-9]{1,3}(\.[0-9]{1,3}){3}' -oE"
for /f %%i in ('adb wait-for-device shell %shellCmd%') do set IP=%%i
REM Connect ADB to device
adb connect %IP%:%port%
goto end
:fail
echo adbWifi [port] [interface]
echo adbWifi off
goto end
:off
adb wait-for-device usb