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。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fighting Horse

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值