Android手機用wifi連接adb調試的方法

https://www.jianshu.com/p/dc6898380e38

0x0 前言

Android開發肯定要連接pc的adb進行調試,傳統的方法是用usb與pc進行連接,操作簡單即插即用,缺點是pc上必須得有對應手機的usb驅動程序,對于谷歌親兒子系列和三星摩托等外國品牌而言這不是什么問題,通常sdk里面就自帶了,然而想華為小米這種自帶魔改rom的國產貨就很難說了,通常需要安裝廠家自己出的usb驅動程序才能連接adb,然而一想到雷猴王的wps全家桶多么喪病我就不想在電腦上裝任何他家的東西。

當然后來有了更加先進的連接adb的方式——wifi連接。只需要敲入幾行命令開啟手機端的adb服務,pc端即可根據手機的ip地址進行adb連接,不用依賴驅動程序,所有品牌的手機都適用,唯一的前提條件是————

ROOT

我去,對Android開發者而言這也算個事?

下面就來介紹怎么使用這種連接方法。

0x1 手動輸入秘笈

首先在手機上安裝一個模擬shell的app,隨便是什么,能像linux的shell一樣執行命令行就可以。

秘笈很簡單:

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

第一行,和linux一樣獲取root權限,我剛才說過你的手機應該已經root了,否則這里會報錯。

第二行設置adb服務端口為5555,這是adb的默認端口。

第三行第四行,重啟adb服務。

如果執行到這里都沒有問題,那么用你覺得方便的方法獲取手機在無線網絡中的ip地址,比如最常見的192.168.0.100

到你的pc機上,打開cmd.exe或其他什么類似的東西,找到adb的存放的路徑,執行以下代碼

adb connect 192.168.0.100 

如果你隨后看到

connected to 192.168.0.100 

類似的字樣,說明已經連接成功了,你在Android Studio的Android Monitor窗口中應該就能看到你的手機了。

0x2 讓app自動輸入秘笈

在制作粗糙的模擬shell app里用手機觸摸屏上的軟鍵盤輸入了3次這種秘笈以后,我終于不能忍了。為什么不能一鍵讓程序自動替我們輸入這些命令呢?

于是現在我假設在某個布局文件中我們已經有了一個Button,名字叫btn_su,在某個Activity中我們加載了這個布局文件,并且綁定給一個Button對象btnSu

下面設置這個btnSu的點擊事件監聽器

btnSu.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) { // TODO } }); 

在事件監聽器里面實現啟動adb服務的功能。

首先開啟一個具有root權限的進程:

Process localProcess = Runtime.getRuntime().exec("su");

打開該進程的輸入流

DataOutputStream os = new DataOutputStream(localProcess.getOutputStream());

向該輸入流中寫入如下字符串

os.writeBytes("setprop service.adb.tcp.port 5555\n");
os.writeBytes("stop adbd\n");
os.writeBytes("start adbd\n");
os.flush();

以上代碼相當于向一個具有root權限的shell中寫入如下命令

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

下面為了更方便的連接電腦進行調試,順便就獲取一下手機的ip地址顯示在屏幕上:

WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
//判斷wifi是否開啟WifiInfo wifiInfo = wifiManager.getConnectionInfo();
int ipAddress = wifiInfo.getIpAddress();
String ip = intToIp(ipAddress);Toast.makeText(MainActivity.this, ip, Toast.LENGTH_LONG).show();

其中intToIp方法想必誰都會寫,這里就不貼出來了。

完整的監聽器onClick實現代碼如下:

@Override
public void onClick(View v) { DataOutputStream os = null; try { Process localProcess = Runtime.getRuntime().exec("su"); os = new DataOutputStream(localProcess.getOutputStream()); os.writeBytes("setprop service.adb.tcp.port 5555\n"); os.writeBytes("stop adbd\n"); os.writeBytes("start adbd\n"); os.flush(); WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); //判斷wifi是否開啟 WifiInfo wifiInfo = wifiManager.getConnectionInfo(); int ipAddress = wifiInfo.getIpAddress(); String ip = intToIp(ipAddress); Toast.makeText(MainActivity.this, ip, Toast.LENGTH_LONG).show(); } catch (IOException e) { e.printStackTrace(); } finally { try { if (os != null) { os.close(); } } catch (IOException e) { } } } 

0x3 吐槽

阿里的價值觀到底是什么摸不太透,不過想來我這個玩意極大的提升操作效率豈不是對那些手敲命令行的人不公平,隱約覺得說起價值觀貌似也是分分鐘藥丸。幸好不在阿里工作,否則早就被叉出去了哈哈。




0x4 other

?也可以在手機上安裝豌豆莢app設置無線連接。

?

0x5 other2

1,? 確認本機PC 沒有任何adb 設備連接,包括模擬器和usb連接, 即 使用

“adb devices” 命令后, 列表顯示為空, 這個是為了后面敲命令容易一些

2,? 將遠程android設備接入wifi, 并查看其IP地址:設置—〉無線或網絡---〉WLAN設置—〉按menu鍵并選擇“高級”選項---〉IP 地址? 例如192.168.2.11

3,? 本機command 命令下執行 ping ?192.168.2.11, 如果ping成功,說明可以連接

4,? 執行 adb connect 192.168.2.11

如果顯示連接成功,則可繼續執行后面的操作;如果不成功,如顯示:

unable to connect to 192.168.2.11:5555

有可能是設備監聽端口的問題,則可以在手機終端執行如下命令:

su ?//獲取root權限

setprop service.adb.tcp.port?5555 ? //設置監聽的端口,端口可以自定義,如5554,5555是默認的

stop adbd ? //關閉adbd

start adbd ? //重新啟動adbd

手機終端的下載程序可以在這里下載:http://as.baidu.com/a/item?docid=437072506&f=web_alad_1

?

執行這個的前提是你手機可以root權限,如果沒有root權限仍然不能執行su

獲得root權限的方法很多,手機型號不同,獲取方法也有差別,網上很多方法,這里不再細述(對調試開發者,獲得root權限是非常必要的)

?

5, ?adb connect ip 成功以后可以執行原來usb連接時的所有命令,如adb install, adb logcat等。

?

下面附上adb的常用命令:

?

1,? 開啟adb ?服務

adb start-server

2,? 關閉adb 服務

adb kill-server

3,? 查看設備

adb devices

4,? 安裝軟件

adb install xxx.apk

5,? 卸載軟件

adb uninstall xxx.apk

6,? 進入設備或模擬器

adb shell ?devicename

如果當前只有一個設備,devicename也可以為空

7,? 從電腦上發送文件到設備

adb push? PCfilepath?devicepath

8,? 從設備上copy文件到電腦

adb pull devicepath? PCpath

9,? 查看bug報告

adb bugreport

10, 獲得設備序列ID

adb get-product

11, 查看log

adb logcat

轉載于:https://www.cnblogs.com/shengs/p/10177801.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/537268.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/537268.shtml
英文地址,請注明出處:http://en.pswp.cn/news/537268.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

控制臺應用程序換換為窗體應用_Epic為開發者設計了一套iPhone使用的運動捕捉應用程序...

玩懂手機網7月13日資訊,我們都知道對于游戲或者是動漫開發者來說,運動捕捉設備是一套非常昂貴的設備,需要非常專業的獨立開發人員,大量的時間才能完成,最近Epic為開發者設計了一套iPhone使用的運動捕捉應用程序。這套i…

螞蟻金服億級并發下的移動端到端網絡接入架構解析

為了與金融從業者、科技從業者共同探討金融 業務的深層次問題,螞蟻金服聯手 TGO 鯤鵬會上海分會,在 12 月 8 日舉辦了「走進螞蟻金服:雙十一背后的螞蟻金服技術支持」活動。螞蟻金服高級技術專家賈島為大家分享了《億級并發下的螞蟻移動端到…

python3.12答案_編程常見問題

通常,不要使用 from modulename import * 。這樣做會使導入器的命名空間變得混亂,并且使得連接器更難以檢測未定義的名稱。在文件的頂部導入模塊。這樣做可以清楚地了解代碼所需的其他模塊,并避免了模塊名稱是否在范圍內的問題。每行導入一個…

如何根據視頻的寬屏與豎屏來排序?

原理 寬屏與豎屏是根據 幀高度 與 幀寬度 來區分的 幀高度就是圖片高度(縱向的像素尺寸),幀寬度就是圖片寬度(橫向的像素尺寸),分辨率就是(高度x寬度)。 windows11的文件排序&…

HashiCorp Vault 1.0開源自動解封特性,新增Batch令牌

HashiCorp發布了其秘密管理工具Vault 的1.0版本,并開源了在發生故障或重啟后繼續使用Vault服務器所需的“自動解封(auto-unseal)”特性。這個版本提供了一種可以用于臨時工作負載的新令牌batch。另一個新特性是,Kubernetes auth現…

sap模塊介紹_小邁說|SAP究竟有多少模塊?

SAP究竟有哪些模塊繼上一期小邁說SAP!SPA?的區別,相信大部分讀者明白了我們與水浴按摩行業的分別,可是僅僅區分名字還不夠,SAP還有眾多的模塊,這些又該怎么去了解呢?這就輪到肩負愛與責任的小邁…

360 再次開源管理平臺 Wayne:基于企業級 Kubernetes 集群

2019獨角獸企業重金招聘Python工程師標準>>> 奇虎 360 宣布正式開源 Wayne ,這是一個由 360 搜索云平臺團隊開發的通用的、基于 Web 的 Kubernetes 多集群一站式可視化管理平臺。內置了豐富多樣的功能,滿足企業的通用需求,同時插件…

python setup.py install 出錯_python setup.py install 失敗

python setup.py install 報錯ImportError: No module named setuptools學習光榮之路python課程時,使用python setup.py install安裝其他模塊時,第一次安裝某模塊成功了.安裝另一模塊卻報錯ImportError: No module named s ...對于python setup&perio…

Node.js 根本沒有這樣搞性能優化的?

1、使用最新版本的 Node.js 僅僅是簡單的升級 Node.js 版本就可以輕松地獲得性能提升,因為幾乎任何新版本的 Node.js 都會比老版本性能更好,為什么? Node.js 每個版本的性能提升主要來自于兩個方面: V8 的版本更新;Nod…

可交付成果、核實的可交付成果、驗收的可交付成果?

①可交付成果。指的是在某一過程、階段或項目完成時,產出的任何獨特并可核實的產品、成果或服務。可交付成果可能是有形的,也可能是無形的。【研發完成】 ②核實的可交付成果。是指已經完成,并經過“控制質量”過程檢查為正確的可交付成果。…

安裝oracle到create inventory時卡住了怎么辦_win10系統安裝教程(官方工具)

Hi,大家好。對于小白用戶,裝系統是比較頭疼的事,所以今天寫一個簡單易懂的裝系統教程。使用微軟官方提供的工具制作U盤啟動盤,操作簡單,系統純凈,強烈建議小白用戶使用。缺點是該工具功能單一,并…

Microsoft Project 排計劃的步驟

Microsoft Project 排計劃的步驟: 第一步:設置項目信息,開始日期,選擇日歷; 第二步:編制WBS 第三步:設置前置任務 第四步:設置WBS每個工期 第五步:設置資源名稱&#xff…

自建CDN Xnign產品指標

Xnign-X1 Xnign-X1 性能參數參考值L7 HTTP RPS (128并發請求)250W QPSL7 HTTP CPS (128并發請求)110W QPSL7 HTTP RPS (100W并發請求)180W QPSL7 HTTP CPS (100W并發請求)60W QPSL7 …

python表達式的值是 y 和n是什么意思_python中^是什么意思

展開全部在Python" // "表示整數除法。Python其它表達式e69da5e887aa3231313335323631343130323136353331333431353432:Python的表達式寫法與C/C類似。只是在某些寫法有所差別。主要的算術運算符與C/C類似。, -, *, /, //, **, ~, %分別表示加法或者取正、…

Linux的啟動流程簡析(以Debian為例)

Linux的啟動流程簡析(以Debian為例) 正文:前面的文章探討BIOS和主引導記錄的作用。那篇文章不涉及操作系統,只與主板的板載程序有關。今天,我想接著往下寫,探討操作系統接管硬件以后發生的事情,也就是操作系統的啟動流…

一階電路中的時間常數_精確移相電路的設計舉例

移相電路就是對輸入信號(一般是正弦波)進行相位控制,而不改變其幅度,本推文以移相電路為例,展示模擬電路的反饋設計技巧與方法:一、全通濾波器實現移相以上是兩種移相電路 的原理,其輸出幅度保持不變,移動的…

工作績效數據、工作績效信息、工作績效報告

目錄 概念 舉例 概念 工作績效數據:觀察,測量,采集到的原始數據 工作績效信息:對“工作績效數據”進行加工分析 工作績效報告:對“工作績效信息”進行白話 舉例 以去健身房為例 1)工作績效數據&…

tickcount()修改成小時分鐘_銀行核心系統24小時機制實現總結

本文共2268字 | 建議閱讀時間:5分鐘作者:張廣在核心系統的設計實現中,24小時機制向來是一個重點難點。早期的銀行只有柜面一個業務辦理渠道,因此當時的綜合業務系統,跟隨網點的營業時間,分為日起&#xff0…

美國將嘗試區塊鏈領域和加密貨幣相結合

首期隱匿性研究綜述有三篇涉及以太坊Casper缺陷問題的論文評論,比特幣通用貨幣理想的內在限制存在兩個問題:以太坊Casper的缺陷問題、比特幣UTXO解決方案的發展。 美國新聞報道,加密貨幣與區塊鏈跨領域研究同儕評論這項一項大膽嘗試&#xff…