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.mzph.cn/news/537268.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

控制台应用程序换换为窗体应用_Epic为开发者设计了一套iPhone使用的运动捕捉应用程序...

玩懂手机网7月13日资讯,我们都知道对于游戏或者是动漫开发者来说,运动捕捉设备是一套非常昂贵的设备,需要非常专业的独立开发人员,大量的时间才能完成,最近Epic为开发者设计了一套iPhone使用的运动捕捉应用程序。这套i…

蚂蚁金服亿级并发下的移动端到端网络接入架构解析

为了与金融从业者、科技从业者共同探讨金融 业务的深层次问题,蚂蚁金服联手 TGO 鲲鹏会上海分会,在 12 月 8 日举办了「走进蚂蚁金服:双十一背后的蚂蚁金服技术支持」活动。蚂蚁金服高级技术专家贾岛为大家分享了《亿级并发下的蚂蚁移动端到…

如何根据视频的宽屏与竖屏来排序?

原理 宽屏与竖屏是根据 帧高度 与 帧宽度 来区分的 帧高度就是图片高度(纵向的像素尺寸),帧宽度就是图片宽度(横向的像素尺寸),分辨率就是(高度x宽度)。 windows11的文件排序&…

sap模块介绍_小迈说|SAP究竟有多少模块?

SAP究竟有哪些模块继上一期小迈说SAP!SPA?的区别,相信大部分读者明白了我们与水浴按摩行业的分别,可是仅仅区分名字还不够,SAP还有众多的模块,这些又该怎么去了解呢?这就轮到肩负爱与责任的小迈…

360 再次开源管理平台 Wayne:基于企业级 Kubernetes 集群

2019独角兽企业重金招聘Python工程师标准>>> 奇虎 360 宣布正式开源 Wayne ,这是一个由 360 搜索云平台团队开发的通用的、基于 Web 的 Kubernetes 多集群一站式可视化管理平台。内置了丰富多样的功能,满足企业的通用需求,同时插件…

Node.js 根本没有这样搞性能优化的?

1、使用最新版本的 Node.js 仅仅是简单的升级 Node.js 版本就可以轻松地获得性能提升,因为几乎任何新版本的 Node.js 都会比老版本性能更好,为什么? Node.js 每个版本的性能提升主要来自于两个方面: V8 的版本更新;Nod…

可交付成果、核实的可交付成果、验收的可交付成果?

①可交付成果。指的是在某一过程、阶段或项目完成时,产出的任何独特并可核实的产品、成果或服务。可交付成果可能是有形的,也可能是无形的。【研发完成】 ②核实的可交付成果。是指已经完成,并经过“控制质量”过程检查为正确的可交付成果。…

安装oracle到create inventory时卡住了怎么办_win10系统安装教程(官方工具)

Hi,大家好。对于小白用户,装系统是比较头疼的事,所以今天写一个简单易懂的装系统教程。使用微软官方提供的工具制作U盘启动盘,操作简单,系统纯净,强烈建议小白用户使用。缺点是该工具功能单一,并…

Linux的启动流程简析(以Debian为例)

Linux的启动流程简析(以Debian为例) 正文:前面的文章探讨BIOS和主引导记录的作用。那篇文章不涉及操作系统,只与主板的板载程序有关。今天,我想接着往下写,探讨操作系统接管硬件以后发生的事情,也就是操作系统的启动流…

一阶电路中的时间常数_精确移相电路的设计举例

移相电路就是对输入信号(一般是正弦波)进行相位控制,而不改变其幅度,本推文以移相电路为例,展示模拟电路的反馈设计技巧与方法:一、全通滤波器实现移相以上是两种移相电路 的原理,其输出幅度保持不变,移动的…

工作绩效数据、工作绩效信息、工作绩效报告

目录 概念 举例 概念 工作绩效数据:观察,测量,采集到的原始数据 工作绩效信息:对“工作绩效数据”进行加工分析 工作绩效报告:对“工作绩效信息”进行白话 举例 以去健身房为例 1)工作绩效数据&…

tickcount()修改成小时分钟_银行核心系统24小时机制实现总结

本文共2268字 | 建议阅读时间:5分钟作者:张广在核心系统的设计实现中,24小时机制向来是一个重点难点。早期的银行只有柜面一个业务办理渠道,因此当时的综合业务系统,跟随网点的营业时间,分为日起&#xff0…

WBS结果输出表

目录​​​​​​​ 概述 模板 案例 扩展阅读 概述 花了很大力气分解的WBS,要趁热打铁,把每个活动落实到人。 模板 推荐一个模板 1:修改成项目名 2:填写项目基本信息 3:WBS的最底层工作包 4:工作…

svn管理工具_主流代码管理工具深度评测

引言 作为有十几年IT行业代码的从业人员,经历过代码管理工具的变迁,从早期的微软的Source Code Control,到TFS,再到SVN,再到现在的Git。我深知代码管理工具是代码开发过程中非常重要的工具。市场上的代码管理工具有很多…

我的2018

写在开始 2018年以飞快的速度临近尾声了,只感慨时间过得真快! 这一年过得算是平平淡淡,没有比较特别的地方。 工作 从去年8月来到这公司,是个做旅游产品的互联网公司,平时里做的事可以说是很简单,我只能说&…

程序员笔试面试后上机_hcie面试有哪些要注意的事项?

大家都知道,华为认证hcie考试分为三个部分,分别是笔试、lab实验和面试。其中,考生讨论得最多的就是面试部分,因为面试不同于笔试和lab实验,自己埋头答题和操作就行,面试要面对考官,考核的东西非…

【Infragistics教程】在javascript构造函数中创建基本继承

2019独角兽企业重金招聘Python工程师标准>>> 【下载Infragistics Ultimate最新版本】 用javascript创建对象有四种方法。具体如下: 对象作为文本构造函数调用模式创建()方法在ES6之后使用类继承的实现因对象创建方法而异。本文将解…

switch芯片和phy芯片的区别_感应式芯片卡CPU卡的FM1208-9和FM1208-10有什么区别,你知道吗?...

感应式CPU卡是目前芯片卡中安全系统较高的芯片,使用范围也较为广泛,但是这款CPU分为FM1208-9和FM1208-10,那你们知道分别代表什么意思呢?他们之间有什么不同呢?CPU白卡FM是什么?首先,我们来说下…

每次登陆都要滑动验证_湖人队冠军成员卡鲁索很吃香:每次谈判都有N支球队点名要他...

10月24日NBA直播台讯:洛杉矶湖人队助理教练迈克-彭伯西在接受媒体采访时透露,湖人队替补控球后卫卡鲁索目前在联盟中很吃香。湖人队每次进行交易谈判时,对方球队都点名想要卡鲁索。彭伯西表示:“每一次我们在休赛期或者交易截止日…