• 按键公众号 :
按键精灵电脑版
立即下载

软件版本:2014.06
软件大小:22.9M
更新时间:2021-12-03

按键精灵安卓版
立即下载

软件版本:3.7.2
软件大小:46.2M
更新时间:2023-05-10

按键精灵iOS版
立即下载

软件版本:1.8.0
软件大小:29.2M
更新时间:2023-03-21

按键手机助手
立即下载

软件版本:3.8.0
软件大小:262M
更新时间:2023-05-30

快捷导航

登录 后使用快捷导航
没有帐号? 注册

发新话题 回复该主题

[江中游] 【江中游异次元-未来的夏娃】第7课 adb应用管理 [复制链接]

1#

江中游电脑版按键论坛教学总录:http://bbs.anjian.com/showtopic-697741-1.aspx

江中游安卓手机系统教学总录: http://bbs.anjian.com/showtopic-699643-1.aspx

江中游异次元

未来的夏娃

第7课 adb应用管理 1

本课命令有:

取当前应用包名类名

启动应用

关闭应用

注意一下:

因为应用的管理很多涉及到了安全所以部分命令是要root权限才可以,凡涉及到root的命令我会尽量说明

本课之前的文章我都是使用未root的物理手机测试的,可以免root

本课以按键精灵安卓版为例

一、取当前应用包名类名(免root)

如果要启动某一个应用就必须要知道这个应用的包名和类名才能启动,所以我们首先的要获取包名或类名,adb原生命令是这样的

  1. adb shell dumpsys window | findstr mCurrentFocus
复制代码

老办法加入到adb.ini记事本中

  1. 当前包名类名= shell dumpsys window | findstr mCurrentFocus
复制代码

大家可以先写下按键代码,来调试一下返回值

  1. Function 取当前包类名(设备ID)
复制代码

1、按键安卓版点到发现位置

  1. mCurrentFocus=Window{629eb29 u0
  2. com.cyjh.mobileanjian.vip/com.cyjh.mobileanjian.vip.activity.MainActivity}|18172|
复制代码
2、按键安卓版点到用户中心位置
  1. mCurrentFocus=Window{2e0ec66 u0 com.cyjh.mobileanjian.vip/com.cyjh.mobileanjian.vip.activity.function.UserCenterActivity}|16776|
复制代码

注意:

1、为什么不一样?

原来在应用中每一个界面都是一个类名,所以在使用有ui的应用中大家可以获取其类名并且直接启动到这个界面,是不是非常好?现在我们就来完善按键的代码,主是是过滤出来包名和类名。

2、每个应用获取的类名也不尽类同,比如按键这个返回值 :

com.cyjh.mobileanjian.vip/com.cyjh.mobileanjian.vip.activity.function.UserCenterActivity

理论上"/"斜杠前面 com.cyjh.mobileanjian.vip是包名,后面是类名,但按键这个就没走寻常路,斜杠后面即有包名也有类名,但是也有的应用就不这样表达,所以我并没有进一步过滤,而按键这个类名就是要把包名除掉:activity.function.UserCenterActivity

为了方便大家使用,我这里的按键代码是返回的数组

  1. Function 取当前包类名(设备ID)
复制代码

二、启动应用,启动应用必须要用到 取当前应用包名类名 返回的包名和类名(本命令要root权限)

启动应用adb原版命令是:

  1. shell am start -n 包名类名
复制代码
adbini记事本这样记录:
  1. 启动应用= shell am start -n
复制代码
按键代码,大家一定要注意我上面说的,取类名的方法,这个是进入到按键的变态游戏界面
  1. Dim adb,设备数组,包类数组
  2. adb = "C:\adb\adb.exe "
  3. adbs = "C:\adb\adb.exe -s "
  4. adbcmd = "C:\adb\adb.ini"
  5. Call 启动服务()
  6. 设备数组 = 获取设备ID群()
  7. TracePrint 设备数组(0)
  8. //Call 安装应用(设备数组(0), "D:\ProgramData\按键精灵\按键精灵手机助手\apk\MobileAnJian.apk")
  9. 包类数组 = 取当前包类名(设备数组(0))
  10. TracePrint join(包类数组)'按键的包名类名一定要先记录好,这只不过是一个查询
  11. //理论上"/"斜杠前面 com.cyjh.mobileanjian.vip是包名,后面是类名,但按键这个就没走寻常路,斜杠后面即有包名也有类名,但是也有的应用就不这样表达,所以我并没有进一步过滤,而按键这个类名就是要把包名除掉:activity.function.UserCenterActivity
  12. Call 启动应用(设备数组(0), "com.cyjh.mobileanjian.vip", "/.activity.MainActivity")
  13. Function 取当前包类名(设备ID)
  14. Dim 命令, adbret, tmps, 位置
  15. Dim 临时数组(2)
  16. 命令 = Plugin.File.ReadINI("adb", "当前包名类名", adbcmd)'读取保存在ini文件中的命令
  17. TracePrint adbs & 设备ID & 命令
  18. adbret = Plugin.JzyCommand.Command(adbs & 设备ID & 命令, 1000)'使用我的插件来获取连接的设备
  19. TracePrint adbret
  20. tmps=split(adbret,"/")
  21. If UBound(tmps) > 0 Then '万恶的下标越界
  22. 位置 = instr(tmps(0), " u0 ")
  23. 包名 = right(tmps(0), len(tmps(0)) - 位置 -3)
  24. TracePrint 包名
  25. 位置 = instr(tmps(1), "}")
  26. TracePrint 位置
  27. 类名 = "/." & left(tmps(1), 位置 - 1)
  28. TracePrint 类名
  29. 临时数组(0) = 包名
  30. 临时数组(1) = 类名
  31. End If
  32. 取当前包类名 = 临时数组
  33. End Function
复制代码
按键代码,大家一定要注意我上面说的,取类名的方法,这个是进入到按键的用户界面
  1. Dim adb,设备数组,包类数组
  2. adb = "C:\adb\adb.exe "
  3. adbs = "C:\adb\adb.exe -s "
  4. adbcmd = "C:\adb\adb.ini"
  5. Call 启动服务()
  6. 设备数组 = 获取设备ID群()
  7. TracePrint 设备数组(0)
  8. //Call 安装应用(设备数组(0), "D:\ProgramData\按键精灵\按键精灵手机助手\apk\MobileAnJian.apk")
  9. 包类数组 = 取当前包类名(设备数组(0))
  10. TracePrint join(包类数组)'按键的包名类名一定要先记录好,这只不过是一个查询
  11. //理论上"/"斜杠前面 com.cyjh.mobileanjian.vip是包名,后面是类名,但按键这个就没走寻常路,斜杠后面即有包名也有类名,但是也有的应用就不这样表达,所以我并没有进一步过滤,而按键这个类名就是要把包名除掉:activity.function.UserCenterActivity
  12. Call 启动应用(设备数组(0), "com.cyjh.mobileanjian.vip", "/.activity.function.UserCenterActivity")
  13. Function 取当前包类名(设备ID)
  14. Dim 命令, adbret, tmps, 位置
  15. Dim 临时数组(2)
  16. 命令 = Plugin.File.ReadINI("adb", "当前包名类名", adbcmd)'读取保存在ini文件中的命令
  17. TracePrint adbs & 设备ID & 命令
  18. adbret = Plugin.JzyCommand.Command(adbs & 设备ID & 命令, 1000)'使用我的插件来获取连接的设备
  19. TracePrint adbret
  20. tmps=split(adbret,"/")
  21. If UBound(tmps) > 0 Then '万恶的下标越界
  22. 位置 = instr(tmps(0), " u0 ")
  23. 包名 = right(tmps(0), len(tmps(0)) - 位置 -3)
  24. TracePrint 包名
  25. 位置 = instr(tmps(1), "}")
  26. TracePrint 位置
  27. 类名 = "/." & left(tmps(1), 位置 - 1)
  28. TracePrint 类名
  29. 临时数组(0) = 包名
  30. 临时数组(1) = 类名
  31. End If
  32. 取当前包类名 = 临时数组
  33. End Function
复制代码
三、关闭应用:关闭应用就很简单喽,adb原生命令是(免root)
  1. adb shell am force-stop
复制代码
adbin记事本方式
  1. 关闭应用= shell am force-stop
复制代码
按键代码为:
  1. Function 关闭应用(设备ID,应用)
  2. Dim 命令,adbret
  3. 命令 = Plugin.File.ReadINI("adb", "关闭应用", adbcmd)'读取保存在ini文件中的命令
  4. TracePrint adbs & 设备ID & 命令 & 应用
  5. adbret = Plugin.JzyCommand.Command(adbs & 设备ID & 命令 & 应用, 1000)'使用我的插件来获取连接的设备
  6. TracePrint adbret
  7. End Function
复制代码
adb下载
adb.rar (, 下载次数:152)

最后编辑江中游 最后编辑于 2022-05-20 09:51:20
江中游老师拥有国内外近6000人内部VIP会员,上百万次的支持率,史上最全面、最详细、最易懂的全方位一体化终极教学
江中游QQ:2025177703;390941087;2426410388
江中游微信号:390941087;bauuia
更多更全面教学请关注江中游抖音号:32135374718;快手号:1398558462

2#

Function 取当前包类名(设备ID)

3#

谢谢老师我看看

4#

胜多负少的水电费水电费sdf

5#

adb应用高级管理

6#

asdasdas

发新话题 回复该主题