Dynamic Feature Module卸载无报错但模块仍存在问题咨询
导致你调用卸载成功但模块仍存在的核心原因和对应解决方式如下:
- 延迟卸载机制特性
deferredUninstall本身是异步延迟操作,返回成功仅代表卸载请求已经被系统接收,不会立刻执行模块删除。Google Play会在设备处于空闲、充电、未被用户主动使用的后台场景下才执行卸载,整个流程可能耗时数小时。
如果你需要测试卸载效果,可以通过adb命令强制触发即时卸载:
adb shell pm uninstall --user 0 <你的应用包名>:<模块名>
也可以打开Google Play应用商店的对应应用详情页,触发一次应用更新来加速卸载流程。
配置和安装来源限制
你模块配置中的<dist:fusing dist:include="true" />表示针对不支持动态分发的Android 5.0及以下设备,会将该模块直接打包到基础APK中,这类设备上的模块属于基础包的一部分,无法通过动态卸载接口删除。
另外,只有通过Google Play正式分发的安装包(包括内部测试、封闭测试通道)才能正常触发动态模块卸载,本地调试安装、第三方渠道安装的应用都不支持该能力。校验方式不准确
SplitInstallManager.installedModules存在本地缓存,即使模块已经被卸载,短时间内查询依然可能返回已安装的结果。更可靠的校验方式是尝试加载模块内独有的类或者资源,示例如下:
private fun checkModuleReallyInstalled(moduleClassName: String): Boolean { return try { Class.forName(moduleClassName) true } catch (e: ClassNotFoundException) { false } }
内容的提问来源于stack exchange,提问作者Hendri Febriansyah
相关产品推荐
相关产品推荐

