请问下aa命令拉起应用的流程
Tiimmi丶 2024-11-21 11:32:36
如题,通过hdc执行aa命令拉起应用,代码的执行流程都是怎样的呢?
有没有文档介绍?
测试acts时遇到了测试套执行了aa命令,应用却拉不起来,想分析下是不是拉起流程卡住了。
您需要先 登录 才能评论/回答
全部评论(2)
aa start 相关实现
ErrCode AbilityToolCommand::RunAsStartAbility()
{
Want want;
StartOptions startoptions;
ErrCode result = ParseStartAbilityArgsFromCmd(want, startoptions);
if (result != OHOS::ERR_OK) {
resultReceiver_.append(ABILITY_TOOL_HELP_MSG_START);
return result;
}
result = AbilityManagerClient::GetInstance()->StartAbility(want, startoptions, nullptr);
if (result != OHOS::ERR_OK) {
HILOG_ERROR("%{public}s result = %{public}d", STRING_START_ABILITY_NG.c_str(), result);
if (result != START_ABILITY_WAITING) {
resultReceiver_ = STRING_START_ABILITY_NG + "\n";
}
resultReceiver_.append(GetMessageFromCode(result));
return result;
}
HILOG_INFO("%{public}s", STRING_START_ABILITY_OK.c_str());
resultReceiver_ = STRING_START_ABILITY_OK + "\n";
return OHOS::ERR_OK;
}
调用流程图:
-
命令解析:
- 使用
getopt_long
解析命令行参数。 - 提取
--device
,--ability
,--bundle
,--options
,--flags
,-C
,-D
等参数。
- 使用
-
参数验证:
- 检查
--ability
和--bundle
是否存在。 - 验证
windowMode
是否为有效值(如102
)。
- 检查
-
构建
Want
对象:- 创建
ElementName
对象,包含设备 ID、包名和能力名。 - 将
ElementName
设置到Want
对象中。 - 添加
coldStart
和debugApp
参数到Want
的参数列表中。 - 设置
flags
到Want
中。
- 创建
-
构建
StartOptions
对象:- 如果指定了
windowMode
,设置StartOptions
的窗口模式。
- 如果指定了
-
调用
StartAbility
方法:- 通过
AbilityManagerClient
调用StartAbility
方法,传递Want
和StartOptions
对象。 - 处理返回结果,记录日志并返回相应的错误码或成功信息。
- 通过
源码地址:tools/aa/include/ability_command.h · OpenHarmony/ability_ability_runtime - 码云 - 开源中国
赞
2024-11-21 14:49:21