2

このクラスにかなり厳密に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.mypackageinstallPackageいました。これは、使用しない限りAndroid 7では動作しませんcom.mypackage.full。問題は、これにより、Android 7 にアップグレードしたユーザーがアプリの最新バージョンに更新できなくなることです。Android 6 と 7 の間で何が変更されて壊れたのですか? また、回避策はありますか?

4

1 に答える 1