adb shell 命令之service调试

在android上有丰富的shell命令用来调试,非常方便,本文通过一个用法来观察下service命令的用法。

  • 首先观察下Usage手册。
C:\Users\xxxx>adb shell service
Usage: service [-h|-?]
       service list
       service check SERVICE
       service call SERVICE CODE [i32 N | i64 N | f N | d N | s16 STR | null | fd f | nfd n | afd f ] ...
Options:
   i32: Write the 32-bit integer N into the send parcel.
   i64: Write the 64-bit integer N into the send parcel.
   f:   Write the 32-bit single-precision number N into the send parcel.
   d:   Write the 64-bit double-precision number N into the send parcel.
   s16: Write the UTF-16 string STR into the send parcel.
  null: Write a null binder into the send parcel.
    fd: Write a file descriptor for the file f to the send parcel.
   nfd: Write file descriptor n to the send parcel.
   afd: Write an ashmem file descriptor for a region containing the data from file f to the send parcel.
  • 使用 service list 列出所有系统服务
C:\Users\xxxx>adb shell service list
Found 302 services:
... //只贴出了一部分
22      SurfaceFlinger: [android.ui.ISurfaceComposer]
23      SysinfoService: [android.os.ISysinfo]
24      accessibility: [android.view.accessibility.IAccessibilityManager]
25      account: [android.accounts.IAccountManager]
26      activity: [android.app.IActivityManager]
27      activity_task: [android.app.IActivityTaskManager]
...
  • 使用check service 检查服务是否存在
C:\Users\xxx>adb shell service check SurfaceFlinger
Service SurfaceFlinger: found
  • 使用call service 调用服务

service call SERVICE CODE [i32 N | i64 N | f N | d N | s16 STR | null | fd f | nfd n | afd f ] …
CODE其实就是binder机制中,onTransact函数中的第一个参数。后面是参数类型,再加上参数

  1. 尝试一下,打开SurfaceFlinger刷新率并显示在屏幕上
C:\Users\xxx>adb shell service call SurfaceFlinger 1034 i32 1
Result: Parcel(NULL)
  1. 跟踪下源码中的实现
    frameworks/native/services/surfaceflinger/SurfaceFlinger.cpp
    找到下面的函数:
status_t SurfaceFlinger::onTransact(uint32_t code, const Parcel& data, Parcel* reply,
                                    uint32_t flags) {}|

在这里插入图片描述
可以看到,enableRefreshRateOverlay(static_cast(n))),中的n就是1为开,0为关。

那么尝试关闭的命令可推断为:

C:\Users\xxx>adb shell service call SurfaceFlinger 1034 i32 0
Result: Parcel(NULL)
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Android系统是一种基于Linux内核的操作系统,而AndroidShell命令则是在Android系统中运行的命令。下面是一些常用的Android Shell命令的简要介绍: 1. adbAndroid Debug Bridge的缩写,是一种用于与Android设备进行通信的命令行工具,可用于安装应用程序、传输文件、执行命令等。 2. am:Android Activity Manager的缩写,用于管理Android应用程序的活动(Activity)和服务(Service),可以启动、停止、打开、关闭等。 3. pm:Android Package Manager的缩写,用于管理Android应用程序的安装包(APK文件),可以安装、卸载、查询应用程序等。 4. wm:Android Window Manager的缩写,用于管理Android窗口和显示,可以设置屏幕分辨率、旋转屏幕、调整窗口大小等。 5. input:用于模拟用户输入,可以发送触摸事件、按键事件等。 6. su:切换到超级用户(root)权限,可以执行一些需要root权限才能进行的操作。 7. cd:切换当前目录。 8. ls:显示当前目录下的文件和目录。 9. mkdir:创建新的目录。 10. cp:复制文件或目录。 11. mv:移动文件或目录。 12. rm:删除文件或目录。 13. cat:显示文件内容。 14. ps:显示正在运行的进程列表。 15. top:实时显示系统资源使用情况。 这些只是Android Shell命令的一小部分,Android提供了更多的命令可以用于开发、调试和管理Android设备。对于想要深入了解Android Shell命令的开发者来说,可以查阅更详尽的Android开发者文档或其他相关资料。 ### 回答2: Android是一种基于Linux内核的开源操作系统,它具有强大的命令行界面及Shell命令集。以下是一些常用的Android Shell命令集合: 1. adb命令Android Debug Bridge,用于与Android设备通信,例如adb shell用于进入设备的Shell环境。 2. su命令:切换到超级用户权限,用于执行需要root权限才能操作的命令。 3. pm命令:Package Manager,用于管理、安装、卸载应用程序。例如pm list packages显示已安装的包名列表。 4. am命令:Activity Manager,用于启动Activity、发送广播等操作。例如am start -n com.example.app/.MainActivity启动应用程序的主界面。 5. input命令:模拟用户输入,例如input tap模拟点击屏幕、input keyevent模拟按键事件。 6. dumpsys命令:获取系统服务的信息。例如dumpsys battery获取电池信息、dumpsys meminfo获取内存使用情况。 7. settings命令:用于访问和修改系统设置,例如settings put system screen_brightness 100设置屏幕亮度为最大值。 8. pm命令:Package Manager,用于管理、安装、卸载应用程序。例如pm install /sdcard/app.apk安装应用程序。 9. getprop和setprop命令:用于获取和设置系统属性。例如getprop ro.build.version获取系统版本号。 10. logcat命令:用于查看设备的日志信息。例如logcat -d打印设备的日志。 这些只是Android Shell命令中的一小部分,通过这些命令可以对Android设备进行各种操作和管理。具体使用时可以参考相关的文档和教程。 ### 回答3: Android shell命令是一组能在Android设备上执行的命令集合,它在设备系统级别上提供了许多功能和控制选项。以下是一些常用的Android shell命令: 1. adb shell:通过adbAndroid调试桥)连接到设备上的shell。 2. ls:列出目录中的文件和子目录。 3. cd:切换当前工作目录。 4. cp:复制文件或目录。 5. mv:移动文件或目录。 6. rm:删除文件或目录。 7. cat:查看文件内容。 8. echo:打印文本到终端或文件。 9. ps:显示当前运行中的进程。 10. top:显示当前系统资源使用情况和进程列表。 11. kill:终止指定的进程。 12. chmod:修改文件或目录的权限。 13. chown:修改文件或目录的所有者。 14. ifconfig:显示网络接口配置信息。 15. ping:测试网络连接和延迟。 16. netstat:显示网络连接和路由表。 17. mount:挂载文件系统。 18. umount:卸载文件系统。 19. getprop:获取设备属性信息。 20. grep:在文件或文本中搜索指定的模式。 这只是常用命令的一小部分,Android shell命令非常丰富,可以用于执行各种系统管理、文件操作、进程管理、网络配置和调试等任务。通过使用这些命令,开发者可以更好地理解和控制Android设备。请注意,使用这些命令时需要小心,以免对系统造成不可逆的影响。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值