1 关键字
debug; 4.1Release; 应用;
2 开发环境
系统版本: 4.1-Release
DevEco Studio版本: 4.0 Release (build:4.0.0.600)
SDK版本: 4.0.10.13(及以上)
设备型号: 开发者手机
3 问题描述
在适配开发者手机4.1Release应用过程中,发现分发中心能成功安装,但是无法正常启动。
4 问题原因
开发者手机4.1Release版本系统参数const.security.developermode.state为空,而解压分发中心hap时发现其module.json的debug配置为true
{
"app": {
···
"debug": true,
···
},
}
5 解决方案
方案一 应用层解决
编译构建分发中心时,IDE的Build Mode改为release(默认为<None>)。
方案二 设备层解决
在设备shell空间里执行
param set const.security.developermode.state 1
6 定位过程
通过分析日志可发现
AMS关键报错01-01 09:02:41.732 776 1529 E C01300/Ability: [ability_manager_service.cpp(CheckDebugAppInDeveloperMode:9019)]Debugging application cannot run in non developer mode. 01-01 09:02:41.732 776 1529 E C01300/Ability: [ability_manager_service.cpp(StartAbilityInner:861)]Generate ability request local error.根据报错信息查找到对应代码
foundation/ability/ability_runtime/services/abilitymgr/src/ability_manager_service.cpp文件下的bool AbilityManagerService::CheckDebugAppInDeveloperMode(bool isDebugApp) { if (isDebugApp && !system::GetBoolParameter(DEVELOPER_MODE_STATE, false)) { HILOG_ERROR("Debugging application cannot run in non developer mode."); return false; } return true; }发现AMS在启动应用时会判断应用的调试类型及当前设备是否支持应用开发模式。
设备是否支持应用开发模式是根据常量
constexpr char DEVELOPER_MODE_STATE[] = "const.security.developermode.state";来判断的。
在设备shell空间里执行
param get | grep const.security.developermode.state发现没有此配置,因此表示该设备不支持应用开发模式。
文章讲述了在适配4.1Release版本的应用到开发者手机时遇到的问题,由于设备developermode状态未设置,导致应用无法正常启动。解决方案包括在编译时切换到release模式和在设备shell中设置developermode状态。定位过程涉及AMS错误检查和代码分析。
322

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



