admin 管理员组文章数量: 887019
1、下载adb调试工具。
Windows下载方式如下
https://developer.android/tools/releases/platform-tools?hl=zh-cn
linux服务器下载方式:
(1)安装扩展YUM
源,基础YUM
源是没有adb
工具包的
yum install -y epel-release
(2)安装adb
命令
yum install -y adb
不管是使用数据线还是远程调试手机,第一次调试时需要在手机上进行授权,手机会自动弹出授权,你需要点击确定,否则无法连接到手机。
手机打开开发者模式USB调试和无线调试
所有的前提都是需要手机打开开发者模式,并开启调试
开启界面
USB数据线链接提示要允许,如果是更换账户或者更电脑无线链接也会弹出,点击确定就好
电脑端调试软件
因为我们需要远程控制手机打开钉钉,所以需要先获取手机上关于钉钉的信息。
步骤1:在电脑上打开CMD
控制台,进入adb
工具所在目录,如:
步骤2:使用数据线连接手机,确保手机已开启USB调试,电脑可以正常查看到连接的手机:
adb.exe devices
步骤3:在手机上打开钉钉,打开后显示在主页,或者在“消息”页面:
步骤4:获取应用的包名和应用名
adb.exe shell "dumpsys window | grep -i mCurrentFocus"
记录:
com.alibaba.android.rimet/com.alibaba.android.rimet.biz.LaunchHomeActivity
测试使用命令找开钉钉
测试时,先将前面打开的页面退出后再测试,使用返回键或者直接返回到手机主页即可,执行命令:
adb.exe shell am start -n com.alibaba.android.rimet/com.alibaba.android.rimet.biz.LaunchHomeActivity
对于显示信息
“Warning: Activity not started, its current task has been brought to the front”
可以忽略,因为钉钉在后台处于运行状态,如果再次打开则会有警告信息;
如果后台没有运行就不会有相关提示,但在登录时钉钉需要好几秒钟才会被完全打开,在后面的脚本中,我们会设置延时来保证APP完全正常运行。
开启手机远程调试
上面讲的是使用数据线直接连接手机,通过
USB
接口调试,在使用网络访问手机时需要具备以下条件:
(1)电脑或者服务器访问手机:因为手机已连接wifi
,所以与电脑在同一内网之中,可以使用内网IP
地址访问;
(2)手机开启远程调试,在笔记本电脑上执行命令:
adb.exe tcpip 5555
端口5555可以自定义,手机重启后端口需要重新开启。
在电脑上adb远程访问手机
连接手机,手机的IP地址是
10.11.0.20
adb.exe connect 10.11.0.20:5555
测试启动钉钉:
adb.exe shell am start -n com.alibaba.android.rimet/com.alibaba.android.rimet.biz.LaunchHomeActivity
执行完命令后,手机端可以正常打开APP了;
当我们可以使用电脑打开手机上的APP时,就可以开始写脚本了
亮屏和密码输入
手机默认情况下肯定是黑屏状态,为了安全我们还设置了密码,我们在使用手机时,一般先把屏幕点亮,然后输入密码,使用完手机后,会顺手将手机黑屏。
亮屏和息屏
使用224
代码进行亮屏,223
进行熄屏:
adb shell input keyevent 224
adb shell input keyevent 223
使用代码26
也可以亮屏,代码26
相当于我们手动按开机/关机键:
adb shell input keyevent 26
再执行一次命令则息屏。
命令执行过程中可能会因为网络质量问题,导致命令执行时间过长。
注意,时间间隔太长的话,电脑与手机的连接可能会超时,需要重新连接手机:
adb.exe connect 10.11.0.20:5555
输入密码
我的密码都是数字,以下是每个数字的代码
:
KeyName | 说明 | KeyID |
---|---|---|
KEYCODE_0 | 按键0 | 7 |
KEYCODE_1 | 按键1 | 8 |
KEYCODE_2 | 按键2 | 9 |
KEYCODE_3 | 按键3 | 10 |
KEYCODE_4 | 按键4 | 11 |
KEYCODE_5 | 按键5 | 12 |
KEYCODE_6 | 按键6 | 13 |
KEYCODE_7 | 按键7 | 14 |
KEYCODE_8 | 按键8 | 15 |
KEYCODE_9 | 按键9 | 16 |
手机上的密码都有很多种,我使用的是纯数字模式。更多关于代码的操作,参考:另一篇Android开启远程ADB调试指南
编写脚本
Windwos版本(使用python
)
这里可以直接执行adb程序,是因为前期已经把
adb.exe
加入到了环境变量中
输入密码要有延时不然速度太快 输入会不全,导致进不去桌面
import os
import time
# 定义命令列表和对应的延迟时间(秒)
commands = [
("adb connect 10.11.0.20:5555", 5),
# 连接手机
("adb shell input keyevent 223", 0.5),
# 先息屏,方式手机处于亮屏状态
("adb shell input keyevent 224", 1),
# 亮屏
("adb shell input swipe 500 1500 500 100 1000", 1),
# 滑动屏幕,进入密码输入界面
("adb shell input keyevent 9", 0.3),
("adb shell input keyevent 12", 0.3),
("adb shell input keyevent 15", 0.3),
("adb shell input keyevent 7", 0.3),
("adb shell input keyevent 14", 0.3),
("adb shell input keyevent 16", 0.3),
# 依次输入密码进行手机解锁
("adb shell input keyevent 3", 1),
# 返回手机主页,防止APP正在桌面运行,一般APP需要重新点击才能完成“快速打卡”操作
("adb shell am start -n com.alibaba.android.rimet/com.alibaba.android.rimet.biz.LaunchHomeActivity", 30),
# 打开钉钉,30秒后执行下一条命令
("adb shell am force-stop com.alibaba.android.rimet", 1),
# 关闭钉钉程序
("adb shell input keyevent 26",1)
# 按一下开关机键,息屏
]
# 执行每个命令,并延迟指定时间
for command, delay in commands:
os.system(command)
time.sleep(delay)
# 关闭 adb.exe 程序
os.system("taskkill /IM adb.exe /F")
运行成功截图
然后把python
程序打包成exe
文件,就可以在计划任务或者其他局域网电脑执行:
pip install pyinstaller
# 安装下python转exe工具
pyinstaller --onefile OpenApp.py
# 把当前py文件转换为exe文件
写一条任务计划,让它每天定时运行(用当前用户运行,如果用system
用户,需要手机重新授权)
schtasks /create /tn "打开APP" /tr "C:\OpenAPP.exe" /sc weekly /d MON,TUE,WED,THU,FRI /st 08:00 /ru Admin /rl HIGHEST /rp 12345
schtasks: 调用
Windows
的任务计划程序命令行工具。
/create: 指定要创建一个新的计划任务
/tn "打开APP": 指定任务的名称为打开APP
/tr “C:\OpenAPP.exe”: 指定任务运行时要执行的程序路径为C:\OpenAPP.exe
/sc weekly: 指定任务的计划频率为每周
/d MON,TUE,WED,THU,FRI: 指定任务在周一、周二、周三、周四、周五
运行
/st 08:00: 指定任务开始的时间为早上8 点
/ru Admin: 指定任务运行的用户账户为Admin
/rl HIGHEST: 指定任务以最高权限运行
/rp 12345: 指定运行任务的用户账户的密码为12345
Windwos版本(使用Powershell
)
这个加入到了环境变量但是他执行报错,还是直接在根目录或者制定目录运行
adb.exe
比较稳。
输入密码要有延时不然速度太快 输入会不全,导致进不去
$commands = @(
@(".\adb.exe connect 10.11.0.20:5555", 5),
# 连接手机
@(".\adb.exe shell input keyevent 223", 0.5),
# 先息屏,方式手机处于亮屏状态
@(".\adb.exe shell input keyevent 224", 1),
# 亮屏
@(".\adb.exe shell input swipe 500 1500 500 100 1000", 1),
# 滑动屏幕,进入密码输入界面
@(".\adb.exe shell input keyevent 9", 0.3),
@(".\adb.exe shell input keyevent 12", 0.3),
@(".\adb.exe shell input keyevent 15", 0.3),
@(".\adb.exe shell input keyevent 7", 0.3),
@(".\adb.exe shell input keyevent 14", 0.3),
@(".\adb.exe shell input keyevent 16", 0.3),
# 依次输入密码进行手机解锁
@(".\adb.exe shell input keyevent 3", 1),
# 返回手机主页,防止APP正在桌面运行,一般APP需要重新点击才能完成“快速打卡”操作
@(".\adb.exe shell am start -n com.alibaba.android.rimet/com.alibaba.android.rimet.biz.LaunchHomeActivity", 30),
# 打开钉钉,30秒后执行下一条命令
@(".\adb.exe shell am force-stop com.alibaba.android.rimet", 1),
# 关闭钉钉程序
@(".\adb.exe shell input keyevent 26",1)
# 按一下开关机键,息屏
)
# 定义命令列表和对应的延迟时间(秒)
foreach ($command in $commands) {
$cmd = $command[0]
$delay = $command[1]
Invoke-Expression $cmd
Start-Sleep -Milliseconds ($delay * 1000)
}
taskkill /IM adb.exe /F
# 关闭 adb.exe 程序
运行成功截图
Linux版本 .sh
脚本
在Linux系统第一次连接
adb connect 10.11.0.20:5555
,手机弹出USB调试,点击允许
。
#!/bin/bash
adb connect 10.11.0.20:5555 > /dev/null 2>&1
# 连接手机
sleep 2
adb shell input keyevent 223
# 先息屏,防止手机处于亮屏状态
sleep 2
adb shell input keyevent 224
# 亮屏
sleep 2
adb shell input swipe 500 1500 500 100 1000
# 滑动手机进入密码输入界面
sleep 2
adb shell input keyevent 9
adb shell input keyevent 12
adb shell input keyevent 15
adb shell input keyevent 7
adb shell input keyevent 14
adb shell input keyevent 16
# 依次输入密码
adb shell input keyevent 3
# 返回手机主页,防止app桌面运行
sleep 2
adb shell am start -n com.alibaba.android.rimet/com.alibaba.android.rimet.biz.LaunchHomeActivity > /dev/null 2>&1
# 启动APP
sleep 30
#设置延时,防止APP没有完全打开
adb shell am force-stop com.alibaba.android.rimet
# 关闭APP
sleep 2
adb shell input keyevent 223
# 熄屏
执行脚本
sh OpenApp.sh
然后把这个脚本写一个任务计划:
[root@localhost ~]# crontab -e
0 8 * * 1-5 /root/OpenApp.sh
每周一到周五的早上八点运行 /root/OpenApp.sh
脚本
如果钉钉设置了快速打卡,当APP重新打开后,则会自动进行打卡。
版权声明:本文标题:使用远程adb操作手机自动打开软件进行打卡 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1726384706h949846.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论