Cập nhật trong ứng dụng cung cấp InstallException (ERROR_API_NOT_AVAILABLE)


12

Đã triển khai tính năng cập nhật trong ứng dụng, sử dụng đoạn mã sau:

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();
    });
}

Tôi đang thử nghiệm bản cập nhật trong ứng dụng trên thiết bị có Android 9. Tuy nhiên, nó đang báo lỗi cho tôi (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)

Có nghĩa là hãy kiểm tra liên kết sau: https://developer.android.com/reference/com/google/android/play/core/install/model/InstallErrorCode#ERROR_API_NOT_AVAILABLE )

Sử dụng phiên bản thư viện lõi Play: 1.6.5

Phiên bản thư viện lõi mới nhất:

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

Tuy nhiên, tôi không thể hiểu tại sao lại nói rằng ERROR_API_NOT_AVAILABLE. Bất kỳ trợ giúp sẽ được đánh giá cao!


Có câu trả lời nào không?
Ankur_009

Chưa, nhưng, Bạn có thể sử dụng tính năng chia sẻ ứng dụng nội bộ này để kiểm tra Cập nhật trong ứng dụng: support.google.com.vn/googleplay/android-developer
Umang Kothari

Có câu trả lời nào không?
moDev

Có bất kỳ câu trả lời hợp lệ cho điều này?
Dhaval Kansara

Có bất kỳ câu trả lời, làm thế nào để giải quyết điều này? Tôi đang nhận được cùng một lỗi.
Ashish Agrawal

Câu trả lời:


5

Trước tiên , vui lòng kiểm tra xem bạn có đang sử dụng phiên bản mới nhất của thư viện chơi không.

Thứ hai , thực tế không phù hợp: Vui lòng kiểm tra ứng dụng bạn đang kiểm tra có cùng tên gói có sẵn trên cửa hàng chơi.

Thí dụ:

Bạn có một ứng dụng trên cửa hàng play với tên gói com.example.appnhưng bạn đang kiểm tra ứng dụng của mình với tên gói com.example.app.debug. Bạn sẽ gặp lỗi này: ERROR_API_NOT_AVAILABLE

Lưu ý: Bạn cần có ít nhất một phiên bản ứng dụng của mình trên cửa hàng play khi bạn đang thử nghiệm.


1. Sử dụng phiên bản mới nhất của thư viện chơi 2. Tên gói vẫn giống nhau, đối mặt với vấn đề này :(
Umang Kothari

Nó hoạt động tốt cho bản dựng Phát hành, nhưng chỉ chạy một lần trên phiên bản Debug nếu bạn xóa bộ nhớ cache và bộ nhớ trong Cửa hàng Play của bạn. Để chạy lại, bạn phải xóa bộ nhớ cache và lưu trữ của Play Store một lần nữa.
Abdul Mateen

1
oh điều này thực sự làm việc cho tôi. Tôi đã xóa bộ nhớ cache và lưu trữ dữ liệu của Play Store. Cảm ơn bạn @AbdulMateen
gmartinsnull

Tôi nghĩ rằng vấn đề cũng liên quan đến chứng chỉ được tải lên để chơi console. Phiên bản gỡ lỗi có chứng chỉ khác và không phù hợp với phiên bản "sản xuất". Vì vậy, không thể kiểm tra api ngay cả với FakeUpdateManager
Nicola Gallazzi

2

Ứng dụng của tôi đã hoạt động tốt trước ngày hôm nay, nhưng tôi bắt đầu gặp lỗi này ngày hôm nay. Một cách giải quyết tạm thời là xóa bộ nhớ cache và bộ nhớ trong Cửa hàng Google Play của bạn và sau đó thử khởi chạy ứng dụng. Đối với tôi, nó chỉ hoạt động lần đầu tiên, nhưng sau đó thất bại. Trước khi khởi chạy lại ứng dụng, tôi phải xóa bộ nhớ cache và lưu trữ lại. Tôi nghĩ rằng có điều gì đó không ổn ở phía Google Play Store do vấn đề này đang xảy ra vì mọi thứ đều ổn đối với tôi trước ngày hôm nay.


2

Ngoài những gì Vipal đề xuất, vấn đề có thể là do sự không khớp chữ ký giữa phiên bản bạn đã cài đặt trên thiết bị và phiên bản Play Store sẽ cung cấp (đây là vấn đề phổ biến nếu bạn thử kiểm tra nó với các bản dựng gỡ lỗi). Xem https://developer.android.com/guide/playcore/in-app-updates#troubledhoot

Gần đây, API Play Core bắt đầu trả về API_NOT_AVAILABLElỗi nếu ứng dụng không thuộc sở hữu của người dùng hoặc chữ ký không khớp, trong khi trước khi nó được sử dụng để trả về một UPDATE_NOT_AVAILABLETác vụ thành công .

Đề xuất là:

  • nếu bạn sử dụng Tiện ích mở rộng Kotlin, hãy đảm bảo rằng bạn đang bắt ngoại lệ bị ném bởi requestAppUpdateInfo
  • nếu bạn sử dụng PlayCore Java, hãy đảm bảo rằng bạn có một onFailureListenerlỗi xử lý các lỗi từgetAppUpdateInfo
  • để kiểm tra bản dựng gỡ lỗi, bạn có thể sử dụng Chia sẻ ứng dụng nội bộ, như được giải thích tại đây: https://developer.android.com/guide/playcore/in-app-updates#iternal-app-shared

Nguồn: Tôi làm việc trong nhóm Play Core


Sử dụng chia sẻ ứng dụng nội bộ đã giúp tôi rất nhiều. Tôi có thể giới thiệu nó. Một chút rườm rà, nhưng đảm bảo không có thông báo lỗi "Tôi không có ý nghĩa" nào bật lên.
MartinJH

0

Giải pháp tạm thời cho thời điểm này là bao quanh OnCompleteListenervới:

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

Chỉ để tránh phải xóa bộ đệm PlayStore mỗi lần tôi khởi chạy lại ứng dụng


1
Có lẽ bạn có thể làm điều này trong addOnFailureListener ? Bởi vì điều này được gọi là một lỗi. Tôi có quy trình InAppUpdate trong BaseActivity và sử dụng giao diện để trả lại kết quả cho bất kỳ Hoạt động nào cần.
Sceada

0

Sau thời gian dài gỡ lỗi. Tôi tìm thấy, điều này là do chúng tôi đang thử nghiệm ứng dụng trực tiếp trên thiết bị di động. Mặc dù chúng tôi tạo và sử dụng apk đã ký, lỗi này sẽ xảy ra. Cách duy nhất để thoát khỏi lỗi này là, chúng ta cần tải xuống ứng dụng từ google play.

Chúng tôi có thể sử dụng chia sẻ ứng dụng Nội bộ để kiểm tra hoặc đơn giản là xuất bản ứng dụng của mình.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.