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

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 に答える