OpenHarmony 应用首次安装正常,重启后显示 $string:app_name,覆盖安装报 9568289 的排查与解决
最近在 OpenHarmony 开发板【DAYU200】上运行官方示例 ArkTS Demo 时,遇到了一个比较奇怪的问题:
应用首次安装、启动完全正常; 重启设备后,桌面上的应用名称变成了 $string:app_name;点击应用无法正常启动;再次通过 DevEco Studio 覆盖安装时失败,错误码为 9568289;删除设备上的旧应用后,又可以重新安装,但重启后问题再次出现。
从错误信息来看,第一反应通常是应用申请了不允许的权限,或者签名的 APL 等级不足。但这个工程只是 DevEco Studio 新建的空白 Demo,module.json5 中甚至不存在 requestPermissions。最终排查发现,真正的问题并不是 Demo 申请了敏感权限,而是:
DevEco Studio、SDK、工程运行平台、API 版本和签名配置没有完全切换到与 OpenHarmony API 设备匹配的状态。
下面记录完整的解决方法。
一、问题解决
1、确定设备系统信息
hdc shell param get const.ohos.apiversion
运行上述指令输出板载OpenHarmony API的版本号,例如此处我的版本号为 26:
![]()
2、确定 deveco studio 工程信息
进入项目根目录下的 build-profile.json5,查看 app/product 下的 runtimeOS ,创建新项目时默认创建的是 Harmonyos 的版本,且只会下载 Harmonyos 的 SDK ,所以此处要配置项目环境与设备版本匹配,例如此处我新建的空项目默认配置为 HarmonyOS API 26:

3、安装与板端匹配的 OpenHarmony API SDK
打开 DevEco Studio:打开 “设置 → OpenHarmony SDK”,点击“编辑”,选择一个OpenHarmony Sdk的安装位置

点击下一步,会给你自动选择最新的SDK下载(此处是 26,与我需要的版本一致,若版本不一致,可以先下载最新的,返回后studio会提供其余版本的sdk供下载)

tips:注意下方链接中的官方教程,在2026-08-29更新前指引下载的最新版本是 DevEco Studio 6.0.2 ,其能下载的 SDK 版本最高仅 20,若板子版本较新,则需下载更高版本的 studio。
构建第一个HarmonyOS应用(ArkTS)-快速入门-基础入门 - 华为HarmonyOS开发者
4、更新工程模型版本
检查:
hvigor/hvigor-config.json5
以及工程根目录的:
oh-package.json5
如果 modelVersion 的值仍为旧版本,则需要修改为下载的新版本,此处我修改为 26.0.0
5、修改工程级 build-profile.json5
找到工程根目录中的:
build-profile.json5
将 products 中的关键配置调整为:
{
"app": {
"products": [
{
"name": "default",
"signingConfig": "default",
"compileSdkVersion": "26.0.0",
"compatibleSdkVersion": "26.0.0",
"targetSdkVersion": "26.0.0",
"runtimeOS": "OpenHarmony"
}
]
}
}
这里最关键的是修改 runtimeOS ,安装 OpenHarmony SDK 并不会自动修改旧工程中的 runtimeOS。其中字段定义可参考:工程级 build-profile.json5 官方说明。
6、重新生成签名
旧工程中已经存在的签名材料可能属于原 HarmonyOS/AppGallery 配置。不能只手工修改 build-profile.json5 中的:
"type": "HarmonyOS"
需要重新生成一套 OpenHarmony 的签名,步骤如下:
- 连接 OpenHarmony 设备;
- 进入 “文件 → 项目结构 → 项目 → 签名配置”
- 勾选 “自动生成签名文件”,不勾选 “使用HarmonyOS签名” ,点击“确定”
- 确认 build-profile.json5 签名类型变成 OpenHarmony

7、同步并重新构建
完成上述配置后,重新选择板子运行即可,重启后 label 应用仍可正常执行。
二、问题根因
先说结论:当前工程与设备不匹配。最明显的问题不是 requestPermissions,而是工程构建成了 HarmonyOS API 22 应用,却安装到了 OpenHarmony API 26 设备上,且使用的是 HarmonyOS 的调试签名。
为什么首次安装正常,重启后才坏
(以下分析由 AI 得出,可做参考)
目前最合理的链路是:

源文件中的 app_name 存在,构建结果也生成了:app labelId = 16777216;ability labelId = 16777221;resources.index
因此 $string:app_name 不是因为漏写字符串,而是重启后系统没有成功通过 HAP 的资源表解析这个引用。随后再次点击 Run 时走的是“已有包更新”路径。BundleManager 会同步更新 AccessToken、签名身份和授权记录;已有记录已经处于不一致状态,于是在内部GrantRequestPermissions 阶段返回通用错误:
9568289: grant request permissions failed
所以这里的 permissions 更像安装器内部阶段名称,不代表 module.json5 必须存在 requestPermissions。
更多推荐

所有评论(0)