目录

卸载ASCF运行时报错:9568312

问题现象

在通过命令行工具卸载设备上的ASCF运行时,系统提示卸载失败。

执行的卸载命令如下:

hdc shell bm uninstall -s -n com.huawei.hms.ascfruntime

控制台返回的错误信息如下:

error: failed to uninstall bundle.
code:9568312
error: The version of the shared bundle is dependent on other applications.

报错截图如下:

背景知识

ASCF运行时为设备上的各类元服务提供底层的运行环境与公共依赖。根据系统的包管理机制,为了保证系统中已安装应用/元服务的正常运行,当一个共享包被其他应用程序依赖时,系统会拦截对该共享包的卸载操作,并抛出依赖冲突的错误。

问题定位

查看控制台输出的错误信息:“The version of the shared bundle is dependent on other applications”。这明确指出当前尝试卸载的包是一个共享包,且设备内存在依赖该包的应用程序。

分析结论

导致问题现象出现的原因是:存在未卸载的元服务应用依赖了当前的ASCF运行时。包管理器的安全机制阻止了强制卸载被依赖的共享包。必须先清理掉所有依赖该运行时的上层应用程序/元服务,切断依赖链后,才能成功卸载底层的ASCF运行时本身。

修改建议

需要先卸载依赖当前设备上ASCF运行时的所有元服务应用,再卸载ASCF运行时本体。具体步骤如下:

  1. 批量卸载依赖应用:在终端中执行以下命令,该命令会遍历设备中的元服务包,检查其是否依赖ASCF运行时,并在确认依赖后自动执行卸载:hdc shell bm dump -a | grep com.atomicservice | while IFS= read -r line; do grep_result=$(bm dump -n $line | grep com.huawei.hms.ascfruntime); if [ ! -z "$grep_result" ]; then bm uninstall -n $line; fi; done所有依赖ASCF运行时的包卸载成功:

  2. 卸载ASCF运行时:依赖项清理完毕后,再次执行针对ASCF运行时的卸载命令:bm uninstall -s -n com.huawei.hms.ascfruntime提示“uninstall bundle successfully.”,表示ASCF运行时卸载成功: