1. 程式人生 > >Android手機用wifi連線adb除錯的方法

Android手機用wifi連線adb除錯的方法

ic_adb_green_black_48dp.png

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視窗中應該就能看到你的手機了。

wifiConnector.JPG

0x2 讓app自動輸入祕笈

在製作粗糙的模擬shell app裡用手機觸控式螢幕上的軟鍵盤輸入了3次這種祕笈以後,我終於不能忍了。為什麼不能一鍵讓程式自動替我們輸入這些命令呢?

於是現在我假設在某個佈局檔案中我們已經有了一個Button,名字叫btn_su,在某個Activity中我們載入了這個佈局檔案,並且繫結給一個Button物件btnSu

下面設定這個btnSu的點選事件監聽器

btnSu.setOnClickListener(new View.OnClickListener() {

    @Override
    public 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 吐槽

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

來自:http://www.jianshu.com/p/dc6898380e38

相關推薦

Android手機wifi連線adb除錯方法

ic_adb_green_black_48dp.png 0x0 前言 Android開發肯定要連線pc的adb進行除錯,傳統的方法是用usb與pc進行連線,操作簡單即插即用,缺點是pc上必須得有對應手機的usb驅動程式,對於谷歌親兒子系列和三星摩托等外國品牌而言這不是什麼

Android Studio 通過無線wifi連線裝置除錯

1.安裝adb環境 在Android Sdk目錄裡面找到platform-tools目錄 複製路徑 例如我的C:\Users\10958\AppData\Local\Android\Sdk\platform-tools到path系統變數 2.檢查adb環境是否配置成功

設計一部iphone手機面向對象的方法

快捷 [] print 成員 log cpu 變量 public ram main.m //編輯字體大小command + < //編譯執行快捷鍵 com + R #import <Foundation/Foundation.h> #import

Android手機通過wifi進行資料傳輸(二)

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Android手機之間通過聲音傳輸資訊方法——聲波通訊(含工程程式碼)

大家可能都用過支付寶的聲波支付,即兩個終端同時開啟該功能,一個終端作為傳送端send,一個終端作為接收端get,send將本終端上發出的請求資訊按照約定規則的演算法進行聲音編碼,並播放出來,get端接收到send發來的聲音資料,按照約定規則進行解碼,即獲得了相應的資訊。 原

android user 版本如何預設adb除錯為開啟

A. 軟體準備 user版本需要先開啟USB debug開關,開啟方式如下: 1、開啟usb除錯 build/core/main.mk 請將user版本下也改為ro.debuggable = 1 ifeq (true,(strip(enable_targ

defyWIFI連線PC上網(限Android2.2)

 關於Defy連線PC上網,之前是2.1的系統,不能用WIFI對等網路連線。這次升級到2.2後,其實完全可以使用WIFI對等網路。具體方法如下: PC端(VISTA系統):     把可上網的LAN網路連線共享給WIFI連線。然後,建立WIFI臨時網路,並儲存。需要使用時可

Android手機去掉底部虛擬按鍵欄方法

需要root手機,在手機檔案系統system資料夾中的build.prop檔案最後加一句程式碼qemu.hw.mainkeys=1(qemu:虛擬作業系統模擬器;hw:硬體;mainkeys:主要按鍵)

Android user版 設定預設adb 除錯 不提示對話方塊

用adb除錯android裝置時,首次連線時,會出現一個授權提示: error: device unauthorized. Please check the confirmation dialog on your device. 工作原理: 原來在我們的PC機(以win

Android手機通過Wifi與PC機之間進行通訊問題 (有程式碼)

這個一個手機客戶端的程式,伺服器程式在PC上。手機和電腦處於同一個區域網內,現在的問題是我摁下發送按鈕 PC上沒有顯示。請大神幫忙 package com.example.send; import java.io.IOException; import java.io.In

Android手機Unity Profiler檢視效能

使用Unity Profiler檢視Android手機上執行效能資料,以下是官方文件: Android Remoteprofiling can be enabled on Android devices through two different paths : WiF

修改Android手機核心,繞過反除錯

0x1.手機裝置環境 Model number: Nexus 5 OS Version: Android 4.4.4 KTU84P Kernel Version: 3.4.0-gd59db4e 0x2.Android核心提取 查詢Android裝置的boot分割槽

Android手機通過usb連線電腦上網

原文地址:http://www.360doc.com/content/13/0617/09/7991404_293414439.shtml 想不通過手機流量資料同時又不使用Wifi上網,這時便可以利用usb了,本人測試的是MIUI6,同時利用到了一個軟體,也已上傳, 見:h

Android手機通過wifi進行數據傳輸(四)

int apk nal com urn contacts views parent world 源文件5 main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayoutxmln

android adb wifi除錯方法,usb用於otg除錯

android adb網路除錯 Android中使用WIFI來連線ADB 簡單 windows下進入android的終端:直接cmd->adb shell 在ubuntu下進入android的終端與windows下稍微不同,步驟: 1、ubuntu下開啟一個終端

如何用adb連線android手機?(我的親自經歷)------ 順便說說unable to connect to 192.168.1.100:5555的原因和解決方法

                        adb是什麼呢? 我就不多說了, 對於搞android開發的人來說, 一定不陌生。 本文講述如何用adb來連線手機。        利用adb來連線手機, 有兩種方式: 1, wifi,  2, usb.        前提條件: 下載adb, 最好把對應的檔案

Android之解決ubuntu沒有無線網絡卡和手機wifi實現adb wifi除錯

1、問題 ubuntu沒有無線網絡卡,但是在在wifi1是同一個網段,然後手機需要wifi adb除錯 2、解決辦法 1、連線上wifi1 2、手機下載“終端模擬器apk”安裝在手機上 3、手機連線電腦,然後adb tcpip 5555 4、然後adb push dro

adb wifi 實現多裝置無線連線Android手機

在我們測試中時常會遇到,手機連線電腦,但是資料線有限或者USB埠有限的情況,這個時候我們需要無線連線。 首先,手機連線電腦,手機和電腦連線同一個wifi,開啟終端輸入 adb tcpip 5555 然後輸入 adb connect 手機wifi_I

Android開發—智能家居系列】(二):手機WIFI模塊進行配置

名稱 ash 端口 clas 方式 mac class 二階 target 【Android開發—智能家居系列】(二):用手機對WIFI模塊進行配置 http://blog.csdn.net/u010924834/article/details/4949672

通過wifi連線Android裝置進行除錯

方法: 先用usb資料線連線裝置,再在terminal下輸入以下命令 D:\LianXi\aaa>adb tcpip 9999 restarting in TCP mode port: 9999 D:\LianXi\aaa>adb connect 192.168.11.120:9999