HarmonyOS 鸿蒙Next中关键资产无法在应用删除后读取

HarmonyOS 鸿蒙Next中关键资产无法在应用删除后读取

LicenceAttr.set(asset.Tag.IS_PERSISTENT,true)
已经设置了不可被删除的标志,但是每次自动签名后进行打包,设备删除旧hap安装新hap时,关键资产无法被找到。但不进行自动签名,打包的hap有修改的功能以及可以读取关键资产。
3 回复

可以排查下签名一致性,并确认每次打包使用完全相同的p12、csr文件生成的证书

如果签名信息更换了的话 会查不到的,需要使用相同的p12、csr文件生成的证书,使用相同的p12、csr文件生成的证书,更换之前的证书文件,不会导致关键资产获取不到的

【背景知识】

  1. 关键资产存储服务:Asset Store Kit(关键资产存储服务,简称ASSET)包含了一系列开放接口,用于提供用户短敏感数据的安全存储及管理功能。这类短敏感数据包括但不限于密码类(账号/密码)、Token类(应用凭据)以及其他关键明文(如银行卡号)等长度较短的敏感信息。

  2. 通过设置IS_PERSISTENT属性,决定应用卸载时是否需要保留关键资产。

关键资产设置IS_PERSISTENT属性需要申请ohos.permission.STORE_PERSISTENT_DATA权限。

  • 如果IS_PERSISTENT设置为true,则关键资产会在应用卸载后仍然保留下来,应用重新安装后,可以继续使用关键资产信息。
  • 如果IS_PERSISTENT设置为false,则关键资产会随应用一起被删除。

更多关于HarmonyOS 鸿蒙Next中关键资产无法在应用删除后读取的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS Next中,应用删除后关键资产无法读取是系统安全机制所致。应用沙盒机制确保应用卸载时其私有数据目录(包括关键资产)会被自动清除,防止残留数据泄露。系统未提供跨应用持久化共享存储关键资产的接口,因此应用卸载后资产将永久失效。如需保留数据,需依赖应用备份机制或云端同步方案,但系统本身不保证删除后访问。

在HarmonyOS Next中,关键资产(如许可证文件)通过LicenceAttr.set(asset.Tag.IS_PERSISTENT, true)设置为持久化后,理论上应用删除时不应被清除。但根据你的描述,问题可能出现在自动签名环节。自动签名可能导致应用的证书或签名密钥变化,使得系统将新安装的HAP视为不同应用,从而无法访问旧数据。

建议检查以下方面:

  1. 签名一致性:确保自动签名使用的证书与旧版本一致。如果证书变更,系统会认为新应用是另一个实体,无法继承旧应用的持久化资产。
  2. 资产路径或标识:验证资产在代码中的访问路径是否严格匹配,避免因路径错误导致读取失败。
  3. 设备调试:在删除旧HAP前,通过DevEco Studio的日志或文件管理器确认资产是否确实存在且路径正确。

如果自动签名无法保持证书一致,可考虑手动签名或配置签名参数以固定证书。此外,测试时注意清理设备缓存,避免旧数据干扰。

回到顶部