このクラスにかなり厳密にCosuUtils
従うというクラスがあります。デバイス所有者であるアプリケーションをプログラムで更新しています。これは Android 6 では問題なく動作しますが、Android 7 で更新しようとすると次のエラーが発生します。
PackageInstaller: Commit of session 1108510423 failed: /data/app/vmdl1108510423.tmp/COSU specified package com.mypackage inconsistent with com.mypackage.full
CosuUtils
パッケージ名をそのように設定します
public static boolean installPackage(Context context, InputStream in, String packageName) throws IOException {
PackageInstaller packageInstaller = context.getPackageManager().getPackageInstaller();
PackageInstaller.SessionParams params = new PackageInstaller.SessionParams(PackageInstaller.SessionParams.MODE_FULL_INSTALL);
params.setAppPackageName(packageName);
前に述べたように、Android 6で正常に動作するものを渡しcom.mypackage
てinstallPackage
いました。これは、使用しない限りAndroid 7では動作しませんcom.mypackage.full
。問題は、これにより、Android 7 にアップグレードしたユーザーがアプリの最新バージョンに更新できなくなることです。Android 6 と 7 の間で何が変更されて壊れたのですか? また、回避策はありますか?