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 日举办了「走进蚂蚁金服:双十一背后的蚂蚁金服技术支持」活动。蚂蚁金服高级技术专家贾岛为大家分享了《亿级并发下的蚂蚁移动端到…

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…