一些背景:我们大多数人可能都遇到过这样的情况ResourceNotFoundException
当我们迁移到安卓应用程序包释放方法。很明显,问题是由于侧面加载应用程序造成的。参考这里。 https://stackoverflow.com/questions/50471888/android-app-bundle-introduces-resource-not-found-crash-in-android-app
谷歌最近宣布solution https://developer.android.com/guide/app-bundle/sideload-check对于这个问题。使用 play core 库,我们可以识别应用程序是否是侧面加载的(识别丢失的拆分 apk)。如果应用程序是侧面加载的,则会显示“安装失败” 弹出窗口并重定向到 Play 商店,用户可以在其中通过 Google Play 商店正确安装应用程序。
Problem:一切正常,直到从 Play 商店安装缺少的拆分 APK。现在,当我重新启动该应用程序时,它立即崩溃并显示错误消息。
默认 FirebaseApp 在此过程中未初始化
Note:直接从 Play 商店下载应用程序效果非常好,没有任何崩溃。仅当应用程序由于侧面加载问题而重新下载时才会发生崩溃。
Code:
项目的build.gradle
:
buildscript {
dependencies {
classpath 'com.android.tools.build:bundletool:0.9.0'
}
}
应用程序模块的build.gradle
:
implementation 'com.google.android.play:core:1.6.1'
扩展应用程序的类:
public void onCreate() {
if (MissingSplitsManagerFactory.create(this).disableAppIfMissingRequiredSplits()) {
// Skip app initialization.
return;
}
super.onCreate();
.....
}
任何帮助都会非常好。
我已经使用最新版本的 Play 核心库解决了这个问题:
应用程序模块的build.gradle:
implementation "com.google.android.play:core:1.7.2"
其他实现保持不变。
扩展 Application 的类:
public void onCreate() {
if (MissingSplitsManagerFactory.create(this).disableAppIfMissingRequiredSplits()) {
// Skip app initialization.
return;
}
super.onCreate();
.....
}
如何测试:
正确测试它的更好方法是在 Play 商店内部测试通道中发布包含上述修复的应用程序包(将您自己添加为测试人员)。
模拟安装无效的apk - 使用bundletool获取.apks
从捆绑包中取出文件,将其解压并使用 adb 命令安装 base_master.apkadb install base_master.apk
.
启动应用程序,您应该看到“安装失败”对话框,它会重定向到 Play 商店,单击“更新”,Play 商店将安装缺少的 apk。
现在启动应用程序应该可以正常工作。
希望这可以帮助
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)