Play Core 1.10.3适配Android14报错:AppUpdateManager替换方案咨询
解决Play Core依赖升级与应用更新代码适配问题
第一步:修正依赖配置
你之前引入的review和asset-delivery模块对应应用评分和资源交付功能,应用更新功能需要单独引入app-update模块,同时必须移除旧的com.google.android.play:core依赖。在Module级别的build.gradle中调整依赖如下:
// 移除旧的 com.google.android.play:core:1.10.3 implementation 'com.google.android.play:app-update:2.1.0' // 适配Android14的稳定版 // 保留需要的其他Play Core模块 implementation 'com.google.android.play:review:2.0.1' implementation 'com.google.android.play:asset-delivery:2.2.2'
第二步:替换代码中的旧组件
1. 更新AppUpdateManager初始化方式
旧的初始化逻辑不变,但需确保导入的是app-update模块下的类:
// 新初始化方式(包名仍为com.google.android.play.core.appupdate.AppUpdateManager) AppUpdateManager appUpdateManager = AppUpdateManagerFactory.create(context);
2. 替换弃用的更新启动方法
旧的startUpdateFlowForResult已被废弃,改用startUpdateFlow并调整参数结构:
// 旧代码(已废弃) appUpdateManager.startUpdateFlowForResult( appUpdateInfo, IMMEDIATE, Splash.this, MY_REQUEST_CODE); // 新代码 appUpdateManager.startUpdateFlow( new AppUpdateOptions.Builder(AppUpdateType.IMMEDIATE) .setRequestCode(MY_REQUEST_CODE) .build(), Splash.this);
需导入com.google.android.play.core.appupdate.AppUpdateType类,用AppUpdateType.IMMEDIATE替代原有的IMMEDIATE常量。
3. 完整适配后的onResume代码
调整包导入并替换旧API调用,最终代码如下:
import com.google.android.play.core.appupdate.AppUpdateInfo; import com.google.android.play.core.appupdate.AppUpdateManager; import com.google.android.play.core.appupdate.AppUpdateManagerFactory; import com.google.android.play.core.appupdate.AppUpdateOptions; import com.google.android.play.core.appupdate.AppUpdateType; import com.google.android.play.core.appupdate.UpdateAvailability; import com.google.android.play.core.tasks.OnSuccessListener; @Override protected void onResume() { super.onResume(); if ("critical".equals(appupdateType) && !Objects.equals(myAppVersion, playStoreVersion)) { appUpdateManager.getAppUpdateInfo().addOnSuccessListener(new OnSuccessListener<AppUpdateInfo>() { @Override public void onSuccess(AppUpdateInfo appUpdateInfo) { // 恢复正在进行的强制更新 if (appUpdateInfo.updateAvailability() == UpdateAvailability.DEVELOPER_TRIGGERED_UPDATE_IN_PROGRESS) { try { appUpdateManager.startUpdateFlow( new AppUpdateOptions.Builder(AppUpdateType.IMMEDIATE) .setRequestCode(MY_REQUEST_CODE) .build(), Splash.this); } catch (IntentSender.SendIntentException e) { Log.e("error on resume", Objects.requireNonNull(e.getMessage())); } } // 完成已下载的更新 if (appUpdateInfo.updateAvailability() == UpdateAvailability.UNKNOWN) { popupSnackbarForCompleteUpdate(); appUpdateManager.completeUpdate(); } } }); } else if ("flexible".equals(appupdateType) && !Objects.equals(myAppVersion, playStoreVersion)) { appUpdateManager.getAppUpdateInfo().addOnSuccessListener(new OnSuccessListener<AppUpdateInfo>() { @Override public void onSuccess(AppUpdateInfo appUpdateInfo) { if (appUpdateInfo.updateAvailability() == UpdateAvailability.UNKNOWN) { popupSnackbarForCompleteUpdate(); appUpdateManager.completeUpdate(); } } }); } }
第三步:Android14适配额外注意事项
- 确保
build.gradle中targetSdkVersion设为34,compileSdkVersion建议同步升级到34。 - 测试时需保证设备上的Play Store应用为最新版本,否则可能出现更新检测失效的情况。
内容的提问来源于stack exchange,提问作者Raman Mishra
相关产品推荐
相关产品推荐

