2

我的应用程序有 2 个功能:“基础”和“扩展”。

清单扩展功能:

<dist:module
    dist:onDemand="true"
    dist:title="@string/title_extend">
    <dist:fusing dist:include="true" />
</dist:module>

使用 SplitInstallManager 下载功能-> startInstall

使用SplitInstallManager 卸载 -> deferredUninstall

使用SplitInstallManager -> getInstalledModules检查已安装的模块

扩展功能正在从 Play 商店成功加载并按预期工作。当此功能变得不必要时 - 将其卸载。

更多,SplitInstallManager 有回调:SuccessListener、FailureListener、CompleteListener。安装和卸载完全成功(没有错误)。

但是,在卸载扩展功能后(并在重新启动应用程序后)它会保持安装状态。

如何从应用程序中删除已卸载的功能(不需要删除未使用的代码和资源)?

4

4 回答 4

4

如该方法的 API 中所述deferredUninstall

一旦调用,Play Store 将尝试最终在后台删除这些模块。

当应用程序在接下来的 24 小时内无法运行时,卸载的模块将被删除。

于 2019-04-19T17:30:21.123 回答
1

这是我注意到的。

1)卸载应用程序会删除下载的模块,因此下次运行应用程序时,应用程序将再次下载模块。

2) 清除应用数据(如adb shell pm clear APP_PACKAGE_NAME)使该模块无法立即对应用可用,但如果在清除应用数据之前已下载该模块,则不会再次下载该模块。换句话说,你不会看到SplitInstallSessionStatus.DOWNLOADING.

3)一旦可下载模块可供应用程序使用,清除“Google Play服务”(即adb shell pm clear com.google.android.gms)的应用程序数据没有任何区别。但有时,即使在卸载应用程序后,可下载的模块仍然存在,尤其是在模块名称更改时。然后 3) 变得很方便清除陈旧的模块。

我认为这里发生的情况是应用程序请求一个可下载的模块,Google Play services下载该模块,将其交给应用程序,并缓存它的副本,以防应用程序再次请求它。如果应用程序被卸载,则Google Play services删除缓存的模块。deferredUninstall()只是要求Google Play services在必要时卸载模块,但我们无法控制何时会发生,如果有的话。

于 2020-02-19T00:57:36.073 回答
0

来自https://developer.android.com/guide/app-bundle/playcore#uninstall_modules

模块卸载不会立即发生。即设备根据需要在后台卸载它们以节省存储空间。您可以通过调用 SplitInstallManager.getInstalledModules() 并检查结果来确认设备已删除模块,如上一节所述。

因此,您可以尝试填充设备上的存储空间,看看是否会触发卸载:)

顺便说一句:在我目前通过“内部早期访问”测试的应用程序的 Play 商店页面上,有一个“延迟操作”部分列出了所有标记为延迟卸载的模块。还有一个按钮“运行延迟操作”,它实际上完全删除了这些模块。

于 2019-11-29T11:14:51.170 回答
0

就我自己的测试而言,卸载被推迟到应用商店更新应用程序。否则,我假设 Play 商店服务最终将等待应用程序完全停用以更新其已卸载的模块(必须重新启动应用程序才能进行更新)。

我已经填写了一个错误,以确定是否有强制(取消)安装按需模块:https ://issuetracker.google.com/u/1/issues/172108742 。以及一种判断哪些模块真正安装的方法。

实际上安装也是如此,直到应用程序更新,按需模块被“模拟”,这可以防止发生这两件事:

平台无法应用模块引入的任何新清单条目。平台无法访问系统 UI 组件的模块资源,例如通知。如果您需要立即使用这些资源,请考虑将这些资源包含在应用程序的基本模块中。

如此处所述:https ://developer.android.com/guide/playcore/play-feature-delivery#access_downloaded_modules

在按需模块正常工作之前,似乎还有很长的路要走。

于 2020-11-01T12:15:16.817 回答