当前位置: 首页 > news >正文

青海做网站最好的公司济南百度seo

青海做网站最好的公司,济南百度seo,微信如何做微商城网站建设,量个网站一个域名模拟触摸、按键等操作,直接在命令行输入对应命令即可。命令行如何识别并操作此命令,执行操作的是shell程序,还是java程序?是不是可以添加自定义的命令? 以下在Android13的代码中分析input命令 Android系统中使用了一…

模拟触摸、按键等操作,直接在命令行输入对应命令即可。命令行如何识别并操作此命令,执行操作的是shell程序,还是java程序?是不是可以添加自定义的命令?

以下在Android13的代码中分析input命令

Android系统中使用了一款叫mksh的shell程序,用于交互式的命令解释器。

mksh

        mksh是一款开源的命令解释器(shell),aosp中的源码路径是external/mksh,编译后会在/system/bin下生成 "sh"可执行程序,init.rc中配置了开机启动这个二进制程序。当"sh"启动后,终端工具上就会出现我们常知的命令解释器,可以输入shell命令进行操作。

        init.rc中定义了名为"console"的service,service对应的可执行程序是sh这个二进制,这个二进制程序由 exteranl/mksh/Android.bp定义。

service console /system/bin/shclass coreconsoledisableduser shellgroup shell log readprocseclabel u:r:shell:s0

 src/main.c中定义一些指令

static const char *initcoms[] = {Ttypeset, Tdr, initvsn, NULL,Ttypeset, Tdx, "HOME", TPATH, TSHELL, NULL,Ttypeset, "-i10", "COLUMNS", "LINES", "SECONDS", "TMOUT", NULL,Talias,"integer=\\\\builtin typeset -i","local=\\\\builtin typeset",/* not "alias -t --": hash -r needs to work */"hash=\\\\builtin alias -t","type=\\\\builtin whence -v","autoload=\\\\builtin typeset -fu","functions=\\\\builtin typeset -f","history=\\\\builtin fc -l","nameref=\\\\builtin typeset -n","nohup=nohup ","r=\\\\builtin fc -e -","login=\\\\builtin exec login","ll=\\ls -all",NULL,/* this is what AT&T ksh seems to track, with the addition of emacs */Talias, "-tU",Tcat, "cc", "chmod", "cp", "date", "ed", "emacs", "grep", "ls","make", "mv", "pr", "rm", "sed", Tsh, "vi", "who", NULL,NULL 
};

 可在此处添加命令。如:ll=ls -all

cmd命令的入口在frameworks/native/cmds/cmd,在cmd.cpp的cmdMain方法中,根据命令获取对应service

int cmdMain(const std::vector<std::string_view>& argv, TextOutput& outputLog, TextOutput& errorLog, int in, int out, int err, RunMode runMode) {sp<ProcessState> proc = ProcessState::self();proc->startThreadPool();......sp<IServiceManager> sm = defaultServiceManager();if (sm == nullptr) {ALOGW("Unable to get default service manager!");errorLog << "cmd: Unable to get default service manager!" << endl;return 20;}int argc = argv.size();if (argc == 0) {errorLog << "cmd: No service specified; use -l to list all running services. Use -w to start and wait for a service." << endl;return 20;}......const auto cmd = argv[serviceIdx];Vector<String16> args;String16 serviceName = String16(cmd.data(), cmd.size());......sp<IBinder> service;if(waitForService) {service = sm->waitForService(serviceName);} else {service = sm->checkService(serviceName);}......status_t error = IBinder::shellCommand(service, in, out, err, args, cb, result);

首先获取ServiceManage,根据命令获取对应的service,sm->checkService(serviceName);

通过service执行命令IBinder::shellCommand(service, in, out, err, args, cb, result);

因此执行cmd命令的是Java程序,如果执行input命令,需要一个service,系统中InputManagerService处理cmd命令

    @Overridepublic void onShellCommand(FileDescriptor in, FileDescriptor out, FileDescriptor err, String[] args, ShellCallback callback, ResultReceiver resultReceiver) {new InputShellCommand().exec(this, in, out, err, args, callback, resultReceiver);} 

最终InputShellCommand执行命令。

此时命令行还不能识别input命令。需要要添加命令入口

frameworks/base/cmds/input,

#!/system/bin/sh
cmd input "$@"

添加自定义shell命令步骤:

1.创建service,添加到servicemanager中

2.创建命令执行类ShellCommand

3.添加cmd入口脚本

http://www.tj-hxxt.cn/news/59554.html

相关文章:

  • 甘肃省住房建设厅网站网络营销策略主要包括
  • 牡丹江0453免费信息网站西安优化网站公司
  • b2c网站好处广州seo外包
  • 网上做代卖的网站免费域名申请网站
  • 网站建设都包括哪些方面营销软文案例
  • 郑州直播网站建设百度商店应用市场
  • 做网站的公司好坑啊百度竞价点击软件
  • ps做网站像素大小百度注册
  • 做招聘网站赚钱么电商怎么做
  • 哪家做网站比较好软文素材库
  • 成都网站建设易维达好seo的特点是什么
  • 网站建设的域名注册宁波seo
  • 网站建设seo策略关键词优化排名费用
  • wordpress登录短信验证seo 视频
  • 一个工厂做网站有什么好处网站推广及seo方案
  • 投资融资理财网站模板重庆百度总代理
  • 网络物流平台廊坊关键词排名优化
  • 找人做效果土去那网站找营销方案100个软文
  • 武汉宠物网站建设广州百度提升优化
  • 果业局网站建设今天特大新闻最新消息
  • 江西建设监理协会网站自己创建一个网站需要多少钱
  • 网站开发回访话术网络营销策略案例
  • 网站开发设计进度表html网页制作案例
  • 社交网站是怎么做的建站模板
  • 用php做的网站必备那些文件百度权重提升
  • wordpress 数据库 nginx广州seo外包公司
  • 开源企业cms建站系统seo 推广教程
  • 织梦网如何把做网站的删掉seo技术培训广东
  • 针对餐饮公司推广做网站方法免费推广网站排名
  • 简述新建站点的步骤全国疫情最新名单