Android 框架实现分析 - 工具 - Base工具

        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,框架实现分析,android)