frameworks/base/cmds下的工具都是用java开发,基于api接口。有am、backup、bmgr、bu、content、ime、input、media、pm、requestsync、screencap、settings、svc、wm。
BaseCommand类用来辅助处理命令行参数和其他公共行为,其源代码位于:
frameworks/base/core/java/com/android/internal/osBaseCommand.java。
|
成员 |
类型 |
说明 |
|
run |
void (String[]) |
初始化命令行解析环境,调用onRun,处理无效参数异常时,调用onShowUsage。 |
|
showUsage |
void () |
调用onShowUsage,提供System.err作为输出目标 |
|
showError |
void (String) |
输出usage和错误信息到System.err |
|
onRun |
void () |
程序主逻辑,需要派生类实现 |
|
onShowUsage |
void (PrintStream) |
输出usage信息,需要派生类实现 |
|
nextOption |
String () |
获取下一个选项参数,如果下一个参数不是“-”开头,返回null,也支持选项合并参数的情形 |
|
nextArg |
String () |
获取下一个参数,没有下一个,返回null |
|
nextArgRequired |
String () |
获取下一个参数,没有下一个,抛出异常 |
base工具的启动都有一个封装shell脚本,脚本调用app_process启动jar包中的命令实现类。比如am工具的启动shell脚本为:
|
#!/system/bin/sh # # Script to start "am" on the device, which has a very rudimentary # shell. # base=/system export CLASSPATH=$base/framework/am.jar exec app_process $base/bin com.android.commands.am.Am "$@" |
am
Am调用ActivityManager的接口,实现启动、停止某个Activity、停止某个包进程、切换用户、发送广播、输出状态等功能。
bmgr
Bmgr与系统backup服务通信。
bu
Bu调用系统backup服务的功能来实现apk、obb、shared、system数据的备份、恢复。
content
Content 用来与ContentProvider通信,实现内容的查询、添加、删除、更新、调用。
ime
Ime用来设置输入法,可以列出、启用、禁用、切换输入法。Ime与系统input_method 通信,通信接口IInputMethodManager。
input
Input是framework提供的一个输入工具,可以模拟输入键盘、鼠标等设备的事件。
Input利用InputManager提供的injectInputEvent方法向framework层直接插入输入事件。
media
Media用来控制当前播放,实现原理是发送输入事件给AudioService。
Media另一个用途是监视播放行为,通过AudioService的registerRemoteControlDisplay接口方法注册监视器。
pm
Am调用PackageManager的接口,实现列出、安装、卸载应用;列出共享库、权限;创建、删除用户等功能。
requestsync
Requestsync 调用ContentResolver的requestSync方法,来同步一些信息。
screencap
Screencap用来获取屏幕快照。Screencap用C++开发。Screencap使用ScreenshotClient或者通过读framebuffer获取屏幕快照。ScreenshotClient通过SurfaceFlinger的captureScreen方法获取屏幕快照。
settings
Settings是系统设置查看修改工具。访问“settings”内容提供者(ContentProvider)。
svc
Svc是一个工具集,封装了电源、USB、无线WIFI、移动数据的配置功能。
wm
Wm调用WindowManager的接口,获取、设置窗口的分辨率(size)、密度(density),设置overscan。
本文概述了Android框架中base工具类BaseCommand的结构与功能,如am、bmgr等,重点介绍了它们如何通过API接口实现活动管理、备份恢复、内容操作等核心功能。shell脚本示例和Am工具的详细功能展示了命令行工具的实际运用。
391

被折叠的 条评论
为什么被折叠?



