使用PC的adb工具通过wifi(TCP方式)调试安卓设备

Part1准备工作:

一、PC和安卓设备(手机或平板)都连上同一个WIFI,即两者都在同一个网段;

二、保证在PC上可以PING通安卓设备的IP;

三、安卓设备也可以PING一下电脑IP,在手机上安装工具FPing,使用这个工具PING电脑。如果ping不通,先检查一下是不是关闭了所有的电脑管家、杀毒软件、WINDOWS自身的防火墙(其实这一步可以省略);

四、台式机可以买个无线网卡,笔者使用的是小米随身WIFI:

(1)电脑上下载小米随身WIFI软件,将随身WIFI插入电脑USB接口,弹出以下提示,默认为WIFI热点模式:

 

使用PC的adb工具通过wifi(TCP方式)调试安卓设备

(2)我们不需要将电脑设置为WIFI热点,而是需要将其作为一个普通无线网卡,因此将其切换到网卡模式,并点击开启:

 使用PC的adb工具通过wifi(TCP方式)调试安卓设备

使用PC的adb工具通过wifi(TCP方式)调试安卓设备

 

(3)设置好之后,使用台式机连接WIFI,安卓设备(手机或平板)也连接同样的WIFI即可;

五、输入命令,连接安卓设备,打开CMD输入

 

Tips:除了电脑的adb工具,Android的一款APP Better Terminal也可以实现adb的所有功能,使用Better Terminal时,需要获取手机root权限,可在Better Terminal中输入su请求打开权限,再输入以下命令调试另一台Android设备,同样是通过tcp方式调试。

adb tcpip 5555

/*切换到无线连接方式,使用USB连接设备时输入,拔掉USB连接线该命令没作用*/

adb connect 172.25.69.189

/*连接安卓设备*/

adb usb

/*可通过该命令切换回usb方式,使用USB连接设备时输入,拔掉USB连接线该命令没作用*/

setprop service.adb.tcp.port 5555

stop adbd

start adbd

 

/*如果无法通过usb方式连接,比如因为没有驱动或没有数据线,那么可以在安卓设备(手机或平板)上执行以上命令,切换到无线连接方式(设置adb的tcp端口为5555,重启Android设备上的adbd进程,让设置生效),注意此方式需要root权限*/

setprop service.adb.tcp.port -1

stop adbd

start adbd

 

/*如果无法通过usb方式连接,通过以上命令切换回usb方式(释放tcp占用的端口,adbd将会监听usb)*/

Tips:有一些第三方工具,把需要在安卓设备上执行的命令做成了app,只要点一个按钮,就可以完成切换。比如adbWireless。此工具同样需要root权限。

(1)未切换到无线连接方式,时输入adb connect 172.25.69.189时,会出现以下提示:

 

使用PC的adb工具通过wifi(TCP方式)调试安卓设备

(2)若没有USB线,可选择在安卓设备上输入命令,或使用上文提到的adbWireless工具。在安卓设备上安装adbWireless,安装时注意,始终允许adbWireless使用root权限,点击中间的按钮,当按钮变为绿色即表示已成功连接到安卓设备

 

使用PC的adb工具通过wifi(TCP方式)调试安卓设备

Tips:可以勾选Auto Start和Auto connection,让安卓设备每次启动,自动打开adbWireless并且自动连接上你的电脑。

 

使用PC的adb工具通过wifi(TCP方式)调试安卓设备

(3)此时再输入adb connect 172.25.69.189,就可以成功连接到安卓设备了

 

使用PC的adb工具通过wifi(TCP方式)调试安卓设备

注意:需要打开“设置->系统->开发者选项->USB调试”设备连接时,注意查看设备是否弹出“允许USB调试吗?”对话框,点击允许,才能进行接下来的操作;

如果“允许USB调试吗?”弹不出来,可以关开一次adbWireless的开关,再次输入命令adb connect 172.25.69.189,弹出即可出现;

Part2操纵您的安卓设备:

(4)准备工作完成后,就可以输入adb命令,无效操纵您的安卓设备啦!

(5)使用命令adb install e:/agg.apk安装安卓软件,出现以下界面即安装成功

 

使用PC的adb工具通过wifi(TCP方式)调试安卓设备

(6)使用命令adb uninstall com.agg.biangui卸载安卓软件,出现Success即卸载成功

注意:adb uninstall 后边的参数不应该是XXX.apk文件名,而是包名,即AndroidMainifest.xml文件中<manifest>节点下,package元素所指定的名字,com.agg.biangui即为agg.apk的包名

(7)断开连接,使用命令adb disconnect

(8)若adb服务出现异常,可以重启adb服务,使用adb stop serveradb start server;

 

附录1:adb介绍

adb是什么?:Android Debug Bridge,就是起到调试桥的作用。通过adb我们可以在Eclipse中方便通过DDMS来调试Android程序,说白了就是debug工具。 adb的工作方式比较特殊,采用监听Socket TCP 5554等端口的方式让IDE和Qemu通讯,默认情况下adb会daemon相关的网络端口,所以当我们运行Eclipse时adb进程就会自动运行。

adb有什么用?:借助adb工具,我们可以管理设备或手机模拟器的状态。还可以进行很多手机操作,如安装软件、系统升级、运行shell命令等等。其实简而言说,adb就是连接Android手机与PC端的桥梁,可以让用户在电脑上对手机进行全面的操作。

(1)查看设备:adb devices

这个命令是查看当前连接的设备, 连接到计算机的android设备或者模拟器将会列出显示

(2)安装软件:adb install

adb install <apk文件路径> :这个命令将指定的apk文件安装到设备上

(3)卸载软件

adb uninstall <软件名>

adb uninstall -k <软件名>

如果加 -k 参数,为卸载软件但是保留配置和缓存文件.

(4)进入设备或模拟器的shell:adb shell

通过上面的命令,就可以进入设备或模拟器的shell环境中,在这个Linux Shell中,你可以执行各种Linux的命令,另外如果只想执行一条shell命令,可以采用以下的方式:

adb shell [command]

如:adb shell dmesg会打印出内核的调试信息。

(5)发布端口

可以设置任意的端口号,做为主机向模拟器或设备的请求端口。如:

adb forward tcp:5555 tcp:8000

(6)从电脑上发送文件到设备

adb push <本地路径> <远程路径>

用push命令可以把本机电脑上的文件或者文件夹复制到设备(手机)

(7)从设备上下载文件到电脑

adb pull <远程路径> <本地路径>

用pull命令可以把设备(手机)上的文件或者文件夹复制到本机电脑

(8)查看bug报告

adb bugreport

(9)记录无线通讯日志

一般来说,无线通讯的日志非常多,在运行时没必要去记录,但我们还是可以通过命令,设置记录:

adb shell

logcat -b radio

(10)获取设备的ID和***

adb get-product

adb get-serialno

(11)重启手机:adb reboot

(12) 终止adb服务进程:adb kill-server

(13)启动abd服务进程:adb start-server

(14) 以root权限重启adb服务:adb root

附录2:常用的shell命令

注:没有在shell模式下,需加上前缀adb shell

(1)ls: 类似于dos下的dir命令

ls最常用的参数有三个: -a -l -F

ls –a

Linux上的文件以.开头的文件被系统视为隐藏文件,仅用ls命令是看不到他们的,而用ls -a除了显示一般文件名外,连隐藏文件也会显示出来。

ls –l

该参数显示更详细的文件信息。

ls –F

使用这个参数表示在文件的后面多添加表示文件类型的符号,例如*表示可执行,/表示目录,@表示连结文件,这都是因为使用了-F这个参数。但是现在基本上所有的Linux发行版本的ls都已经内建了-F参数,也就是说,不用输入这个参数,我们也能看到各种分辨符号。

例:在adb下使用shell命令查看sd卡下的文件列表,显示文件最后更改时间

adb shell su -c "ls -l /sdcard"

(2)cd: 用于切换用户当前工作目录

cd aaa  进入aaa目录

cd      命令后不指定目录,会切换到当前用户的home 目录

cd ~    作用同cd后不指定目录,切换到当前用户的home 目录

cd -    命令后跟一个减号,则会退回到切换前的目录

cd ..   返回到当前目录下的上一级目录

(3)pwd:用于显示用户当前工作目录

(4)mkdir  rmdir

midir:创建目录     

rmdir:删除目录

两个命令都支持-p参数,对于mkdir命令若指定路径的父目录不存在则一并创建,对于rmdir命令则删除指定路径的所有层次目录,如果文件夹里有内容,则不能用rmdir命令

如下:

mkdir -p 1/2/3

rmdir -p 1/2/3 

 (5)cp:复制命令

复制一个文件到另一目录:cp 1.txt ../test2

复制一个文件到本目录并改名:cp 1.txt 2.txt

复制一个文件夹a并改名为b:cp -r a b

(6)mv:移动命令

将一个文件移动到另一个目录:mv 1.txt ../test1

将一个文件在本目录改名:mv 1.txt 2.txt

将一个文件一定到另一个目录并改名:mv 1.txt ../test1/2.txt

(7)rm命令

rm命令用于删除文件,与dos下的del/erase命令相似,rm命令常用的参数有三个:-i,-r,-f。

–i :系统在删除文件之前会先询问确认,用户回车之后,文件才会真的被删除。需要注意,linux下删除的文件是不能恢复的,删除之前一定要谨慎确认。

–r:该参数支持目录删除,功能和rmdir命令相似。

–f:和-i参数相反,-f表示强制删除

(8)du、df命令

du命令可以显示目前的目录所占用的磁盘空间,df命令可以显示目前磁盘剩余空间。

如果du命令不加任何参数,那么返回的是整个磁盘的使用情况,如果后面加了目录的话,就是这个目录在磁盘上的使用情况。

du -hs 指定目录  查看指定目录的总大小

du -hs ./* 查看当前目录下的所有文件夹和文件的大小

这两个命令都支持-k,-m和-h参数,-k和-m类似,都表示显示单位,一个是k字节一个是兆字节,-h则表示human-readable,即友好可读的显示方式。

(9)cat命令

cat命令的功能是显示或连结一般的ascii文本文件。catconcatenate的简写,类似于dos下面的type命令。用法如下:

cat file1 显示file1文件内容

cat file1 file2 依次显示file1,file2的内容

cat file1 file2 > file3 file1, file2的内容结合起来,再重定向(>file3文件中。

">"是右重定向符,表示将左边命令结果当成右边命令的输入,注意:如果右侧文件是一个已存在文件,其原有内容将会被清空,而变成左侧命令输出内容。如果希望以追加方式写入,请改用">>"重定向符。

如果">"左边没有指定文件,如: cat >file1,将会等用户输入,输入完毕后再按[Ctrl]+[c][Ctrl]+[d],就会将用户的输入内容写入file1

(10)am命令

在Android中,除了从界面上启动程序之外,还可以从命令行启动程序,使用的是命令行工具am,用法如下:

am start -n {包(package)名}/{包名}.{活动(activity)名称}

Settings(系统设置)的启动方法为:

am start -n com.android.settings/.Settings

SettingsMbox(系统快速设置)的启动方法为:

am start -n com.mbx.settingsmbox/.SettingsMboxActivity

calendar(日历)的启动方法为:

am start -n com.android.calendar/com.android.calendar.LaunchActivity

AlarmClock(闹钟)的启动方法为:

am start -n com.android.alarmclock/com.android.alarmclock.AlarmClock

Music 和 Video(音乐和视频)的启动方法为:

am start -n com.android.music/com.android.music.MusicBrowserActivity

am start -n com.android.music/com.android.music.VideoBrowserActivity

am start -n com.android.music/com.android.music.MediaPlaybackActivity

Camera(照相机)的启动方法为:

am start -n com.android.camera/com.android.camera.Camera

Browser(浏览器)的启动方法为:

am start -n com.android.browser/com.android.browser.BrowserActivity

(11)netcfg命令

查看设备的ip地址

 

转载于:https://my.oschina.net/outcat/blog/631192