인앱 업데이트에서 InstallException이 발생 함 (ERROR_API_NOT_AVAILABLE)


12

다음 코드 스 니펫을 사용하여 인앱 업데이트 기능을 구현했습니다.

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이라고 말하는지 알 수 없습니다. 도움을 주시면 감사하겠습니다!


답이 있습니까?
Ankur_009

아직은 아니지만이 내부 앱 공유를 사용하여 InApp 업데이트를 테스트 할 수 있습니다 : support.google.com/googleplay/android-developer/answer/…
Umang Kothari

답이 있습니까?
moDev

이에 대한 올바른 답변이 있습니까?
Dhaval Kansara

대답이 있으시면 어떻게 해결할 수 있습니까? 같은 오류가 발생합니다.
Ashish Agrawal

답변:


5

먼저 최신 버전의 재생 라이브러리를 사용하고 있는지 확인하십시오.

둘째 , 절제된 사실 : 테스트중인 앱이 Play 스토어에서 사용 가능한 동일한 패키지 이름을 가지고 있는지 확인하십시오.

예:

패키지 이름으로 Play 스토어에 com.example.app앱이 있지만 패키지 이름으로 앱을 테스트하고 있습니다 com.example.app.debug. 이 오류가 발생합니다 : ERROR_API_NOT_AVAILABLE

참고 : 테스트 할 때는 Play 스토어에 앱 버전이 하나 이상 있어야합니다.


1. 플레이 라이브러리 (2)의 최신 버전을 사용하여 패키지 이름은 동일하지만이 문제 :( 직면
UMANG Kothari의

릴리스 빌드에서는 잘 작동하지만 Play 스토어 캐시 및 스토리지를 지우는 경우에만 디버그 버전에서 한 번 실행됩니다. 다시 실행하려면 Play 스토어의 캐시와 저장 공간을 다시 비워야합니다.
압둘 마틴

1
아, 이것은 실제로 나를 위해 일했습니다. Play 스토어의 캐시 및 저장 데이터를 지 웠습니다. 감사합니다 @AbdulMateen
gmartinsnull

문제는 콘솔 재생을 위해 업로드 된 인증서와도 관련이 있다고 생각합니다. 디버그 버전이 다른 인증서를 가지고 있으며 "생산"인증서와 일치하지 않습니다. 따라서
FakeUpdateManager로

2

오늘 전에 내 앱이 제대로 작동했지만 오늘이 오류가 발생하기 시작했습니다. 임시 해결 방법 중 하나는 Google Play 스토어 캐시 및 저장 공간을 비운 다음 앱을 실행하는 것입니다. 나를 위해, 그것은 처음으로 작동하지만 나중에 실패합니다. 앱을 다시 시작하기 전에 캐시와 스토리지를 다시 비워야합니다. 오늘 Google Play 스토어 측에 문제가 발생하여 오늘이 문제가 발생했기 때문에 문제가 발생했다고 생각합니다.


2

Vipal이 제안한 것 외에도이 문제는 기기에 설치 한 버전과 Play 스토어가 제공하는 버전 사이의 서명이 일치하지 않기 때문일 수 있습니다 (디버그 빌드로 테스트하려고 할 경우 일반적인 문제임). https://developer.android.com/guide/playcore/in-app-updates#troubleshoot를 참조 하십시오

최근 API_NOT_AVAILABLE사용자가 앱을 소유하지 않았거나 서명이 일치하지 않으면 Play Core API에서 오류를 반환하기 시작 했지만 이전에는 성공적인 UPDATE_NOT_AVAILABLE작업 을 반환하는 데 사용되었습니다 .

권장 사항은 다음과 같습니다.

출처 : 저는 Play Core 팀에서 일합니다


내부 앱 공유를 사용하면 많은 도움이되었습니다. 추천 할 수 있습니다. 약간 성가 시지만 "나는 말이 안됩니다"오류 메시지가 나타나지 않도록합니다.
MartinJH

0

현재 임시 해결 방법은로 둘러싸는 것 OnCompleteListener입니다.

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

앱을 다시 시작할 때마다 PlayStore 캐시를 지우지 않아도됩니다.


1
아마 당신은 addOnFailureListener 에서 이것을 할 수 있습니까? 오류가 발생했기 때문입니다. BaseActivity에 InAppUpdate 프로세스가 있으며 인터페이스를 사용하여 필요한 모든 활동에 결과를 제공합니다.
Sceada

0

장시간 디버깅 후. 앱을 모바일에서 직접 테스트하고 있기 때문입니다. 서명 된 apk를 생성하여 사용하더라도이 오류가 발생합니다. 이 오류를 제거하는 유일한 방법은 Google Play에서 앱을 다운로드해야한다는 것입니다.

내부 앱 공유 를 사용하여 을 테스트하거나 간단히 게시 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.