web-dev-qa-db-ja.com

アプリ内アップデートでInstallException(ERROR_API_NOT_AVAILABLE)が発生する

次のコードスニペットを使用して、アプリ内更新機能を実装しました。

private void showInAppUpdateDialog(boolean isMandatoryUpdate) {
    Task<AppUpdateInfo> appUpdateInfoTask = appUpdateManager.getAppUpdateInfo();

    appUpdateInfoTask.addOnSuccessListener(appUpdateInfo -> {
        if (appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE
                || appUpdateInfo.updateAvailability() == UpdateAvailability.DEVELOPER_TRIGGERED_UPDATE_IN_PROGRESS) {

            int appUpdateType = isMandatoryUpdate ? IMMEDIATE : AppUpdateType.FLEXIBLE;
            int requestCode = isMandatoryUpdate ? REQUEST_APP_UPDATE_IMMEDIATE : REQUEST_APP_UPDATE_FLEXIBLE;

            if (appUpdateInfo.isUpdateTypeAllowed(appUpdateType)) {
                // start the app update
                try {
                    appUpdateManager.startUpdateFlowForResult(appUpdateInfo, appUpdateType, targetActivity, requestCode);
                } catch (IntentSender.SendIntentException e) {
                    e.printStackTrace();
                }
            }
        }
    }).addOnFailureListener(e -> {
        e.printStackTrace();
    });
}

Android 9.を搭載したデバイスでアプリ内アップデートをテストしています。それでもエラー(ERROR_API_NOT_AVAILABLE)が発生します:

com.google.Android.play.core.install.InstallException: Install Error(-3): The API is not available on this device. (https://developer.Android.com/reference/com/google/Android/play/core/install/model/InstallErrorCode#ERROR_API_NOT_AVAILABLE)
        at com.google.Android.play.core.appupdate.i.a(Unknown Source:24)
        at com.google.Android.play.core.internal.o.a(Unknown Source:13)
        at com.google.Android.play.core.internal.j.onTransact(Unknown Source:22)
        at Android.os.Binder.execTransact(Binder.Java:731)

次のリンクをチェックしていると言っています: https://developer.Android.com/reference/com/google/Android/play/core/install/model/InstallErrorCode#ERROR_API_NOT_AVAILABLE

Playコアライブラリバージョンの使用:1.6.5

最新のコアライブラリバージョン:

implementation 'com.google.Android.play:core:1.7.0'

ただし、ERROR_API_NOT_AVAILABLEと表示されている理由を取得できません。何か助けていただければ幸いです!

14
Umang Kothari

長い時間のデバッグの後。私が見つけたのは、これはモバイルで直接アプリをテストしているためです。署名付きapkを生成して使用している場合でも、このエラーが発生します。このエラーを取り除く唯一の方法は、Google Playからアプリをダウンロードする必要があることです。

Internal app sharing を使用して、アプリをテストまたは公開することができます。

0
Vimal

当面の一時的な回避策は、OnCompleteListenerを:で囲むことです。

try {...} catch(e: RuntimeExecutionException) {...}

アプリを再起動するたびにPlayStoreキャ​​ッシュをクリアする必要がないようにするため

0
Nicolas Ducom