我正在使用these instructions通过Android Studio测试应用内更新。
为了进行测试,我删除了我的App,并在gradle中设置了次要版本代码,然后从调试中将此版本的App安装到了我的设备中。
上面的代码总是返回UPDATE_NOT_AVAILABLE
。
代码:
private void checkForUpdates() {
// Creates instance of the manager.
AppUpdateManager appUpdateManager = AppUpdateManagerFactory.create(MainActivity.this);
// Returns an intent object that you use to check for an update.
Task<AppUpdateInfo> appUpdateInfoTask = appUpdateManager.getAppUpdateInfo();
// Checks that the platform will allow the specified type of update.
Log.d(TAG, "upd_1:" + appUpdateManager.getAppUpdateInfo());
appUpdateInfoTask.addOnSuccessListener(appUpdateInfo -> {
Log.d(TAG, "upd_2:" + appUpdateInfo.updateAvailability());
Log.d(TAG, "upd_3:" + appUpdateInfo.availableVersionCode());
if (appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE
// For a flexible update, use AppUpdateType.FLEXIBLE
&& appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.IMMEDIATE)) {
// Request the update.
try {
appUpdateManager.startUpdateFlowForResult(
// Pass the intent that is returned by 'getAppUpdateInfo()'.
appUpdateInfo,
// Or 'AppUpdateType.FLEXIBLE' for flexible updates.
AppUpdateType.IMMEDIATE,
// The current activity making the update request.
this,
// Include a request code to later monitor this update request.
MY_REQUEST_CODE);
} catch (IntentSender.SendIntentException e) {
e.printStackTrace();
}
}
});
}
这是我的日志:
这是updateAvailability()
的日志:
2019-12-05 17:00:39.436 3381-3381/org.my.app D/MainActivity: upd_2:1
这是availableVersionCode()
的日志:
2019-12-05 17:00:39.436 3381-3381/org.my.app D/MainActivity: upd_3:0
我怎样才能测试更新应用内previos以上传此应用的新版本?
答案 0 :(得分:1)
这里的聚会有点晚了,但希望这可以在未来帮助其他人:
您收到不好回应的原因是您尝试提供更新的新 APK 和您当前安装的 APK 都必须由您的生产密钥签名,也就是发布版本。使用调试版本会导致每次调用都失败。
为了正确测试这一点,我建议将发布版 APK 上传到 Google Developer Console 上的内部测试轨道。像这样:
x.x.1
上传到内部测试轨道,然后使用链接下载到您的设备x.x.2
上传到内部测试轨道此处有更多详细信息:In-App Update API showing UPDATE_NOT_AVAILABLE while testing on debugging device
答案 1 :(得分:0)
至少您应该从Play商店下载该应用。这是因为设备必须知道有关应用程序的确切信息。加载其他降级的应用程序后,您的代码即可使用。