专栏首页Flutter入门Android adb无线调试脚本

Android adb无线调试脚本

使用adb的无线调试功能十分的方便。 但是实际工作中,总是要手动输入,十分麻烦。所以就把它写成脚本文件。

使用步骤

  1. 连接上USB
  2. 运行脚本文件(windows双击运行bat文件,mac的话terminal运行)
  3. 拔掉USB 这样就可以愉快的开始无线调试了~
  4. 注意手机和电脑需要在一个无线局域网内!!

window的bat脚本

adb_wifi.bat

@echo off
adb disconnect
REM 待处理的字符串
adb shell "ip address | grep inet | grep -v inet6 | grep -v 127" >ip.txt
set /P IP=<ip.txt
del ip.txt
echo %IP%
set str="%IP%"
REM set str="inet 192.168.1.137/24 brd 192.168.1.255 scope global wlan0"

REM FOR语句是按行进行遍历,也就是一行一次循环,对于我们来说,只有一行字符串,
REM 这个FOR循环肯定只进入一次。而我们是要对字符串进行空格分割后再处理。因此这
REM 里用GOTO语句来实现循环。而FOR语句只需看成是一条语句,这条语句实现了这样的
REM 功能:将字符串分割成两一部分,一部分是第一个空格前的字串,另一部分是剩余的
REM 字串(tokens=1,*)。第一部分保存在 a 变量中,第二部分保存在 b 变量中,这
REM 个 b 是自动的。
for /f "tokens=2,*" %%a in (%str%) do (
    REM 这里可以替换成自己的处理程序,现在只是简单地显示值
    REM set a = "%%a"
    REM echo %a%
    REM 将剩余字符串存在b里面
    set str="%%a"
)
echo str = %str% 
for /f "delims=/ tokens=1,*" %%a in (%str%) do (
    REM 这里可以替换成自己的处理程序,现在只是简单地显示值
    REM set a = "%%a"
    REM echo %a%
    REM 将剩余字符串赋值给str变量
    set str=%%a
)
echo str = %str% 

adb tcpip 6666
set _ip=%str%:6666
adb connect %_ip% >result.txt
set /P RESULT=<result.txt
del result.txt
echo %RESULT% |findstr "^connected" >nul
if %errorlevel% equ 0 (
echo "成功连接到%_ip%"
) else (
echo "连接到%_ip%失败!!"
pause
)
  • 注意事项
  1. 需要配置adb的环境变量。否则需要将脚本中的adb写成绝对路径。
  2. 运行成功,就会直接关掉窗口。运行失败,则不会自动关闭窗口。
  3. 因为没有找到可以直接接受命令返回的方法,所以执行过程中会产生两个临时文件。(最后都会自动删除掉)
  4. bat脚本运行于windows,双击就可以运行。

shell脚本

adb_wifi.sh

#!/bin/bash
_port=":6666"
port=${_port:1-start}
# 将adb先断开
adb disconnect
#取到ip地址. 这里包括了3钟获取IP的方法,ip address应该是通用的方法
ip=`adb shell "ip address | grep inet | grep -v inet6 | grep -v 127"`
len=${#ip}
if [[ $len != 0 ]]; 
    _ip=`echo $ip |cut -f 2 -d ' ' |cut -f 1 -d '/'`${_port}
then 
    ip=`adb shell "ifconfig | grep inet | grep -v inet6 | grep -v 127"`
    len=${#ip}
    # 在魅族的手机上,可能获取不到数据,通过另外的方法来取
    if [[ $len == 0 ]]; 
    then
        ip=`adb shell "getprop dhcp.wlan0.ipaddress" | head -n 1`
        len=${#ip}
        val=`expr $len - 1`
        _ip=${ip:0:val}${_port}
    else
        ip=`echo ${ip} | cut -f 2 -d ' '`
        _ip=`echo ${ip} | cut -f 2 -d ':'`${_port}
    fi
fi
result=`adb tcpip ${port}`
result=`adb connect ${_ip}`
echo $result
  • 注意事项
  1. 需要配置adb的环境变量。否则需要将脚本中的adb写成绝对路径。
  2. shell脚本不需要文件做中间变量就可以。
  3. shell脚本的运行 必须先给对应的权限.然后运行。
chmod +x adb_wifi.sh
./adb_wifi.sh

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • RecyclerView 源码分析-开编

    看了又看,任然对其一知半解。用了又用,发现其真的太美。RecyclerView的设计和书写实在是太惊艳了,日常又使用的相当频繁。虽然之前就看过其他的源码分析,故...

    deep_sadness
  • Weex是如何在Android客户端上跑起来的

    Weex可以通过自己设计的DSL,书写.we文件或者.vue文件来开发界面,整个页面书写分成了3段,template、style、script,借鉴了成熟的MV...

    deep_sadness
  • Flutter入门三部曲(3) - 数据传递/状态管理

    Flutter数据传递 分为两种方式。一种是沿着数的方向从上向下传递状态。另一种是 从下往上传递状态值。

    deep_sadness
  • 【DB笔试面试787】在Oracle中,参数DB_BLOCK_CHECKSUM和DB_BLOCK_CHECKING的作用是什么?

    在Oracle中,参数DB_BLOCK_CHECKSUM和DB_BLOCK_CHECKING的作用是什么?

    小麦苗DBA宝典
  • 管理小型技术团队的方法

    相对于大公司来讲,创业型公司所拥有的人才可能没有大公司那样齐全,很多岗位也是缺胳膊少腿,但是在创业型的团队中总会有那么几个很符合需求的人,这几个人,就是所谓特种...

    韩伟
  • 利用 IComparable<T> 以及 IComparer<T> 定义顺序关系

    我们都知道,在开发中如果想把某个类型的对象放入集合中执行排序和搜索功能,就需要定义出来对象与对象之间的关系。那么你知道怎么样定义对象关系才是正确的吗?下面就听我...

    喵叔
  • 腾讯运维技术专家集结,揭秘高效智能运维 | 沙龙报名中

    活动信息 ? 收获多多 收获与腾讯、行业技术大咖面对面交流机会 收获机器学习算法在运维领域的应用经验 收获腾讯数字化转型中,海量业务上云实践经验 收获研发运...

    腾讯云serverless团队
  • pop3命令

             user username     输入你要查看用户的用户名   pass password    输入该用户对应的密码

    py3study
  • Docker 基础配置安装(Ⅰ)

    老七Linux
  • 使用vb脚本让电脑自动加入域源码

    在企业用户中,一大部分用户都加入了域,用于公司的安全管理。加入域对于管理比较方便。但是新增的设备或者用户如何快速的加入已知的域呢?很简单,看代码:

    业余草

扫码关注云+社区

领取腾讯云代金券