【发布时间】:2019-11-05 14:27:04
【问题描述】:
一些背景:当我们迁移到 Android app bundle 发布方法时,我们大多数人可能都遇到过这个ResourceNotFoundException。很明显,问题是由于侧面加载应用程序造成的。 Reference here.
Google 最近针对这个问题发布了solution。使用 play 核心库,我们可以识别应用程序是否侧载(识别缺少的拆分 apk)。如果应用程序被侧载,它会显示“安装失败”弹出窗口并重定向到 Play 商店,用户可以通过 Google Play 商店正确安装应用程序。
问题:一切正常,直到从 Play 商店安装缺少的拆分 apk。现在,当我重新启动该应用程序时,它会立即崩溃并显示一条错误消息。
默认 FirebaseApp 未在此过程中初始化
注意:直接从 Play 商店下载应用程序完全可以正常工作,不会出现任何崩溃。仅当应用因侧载问题而重新下载时才会发生崩溃。
代码:
项目build.gradle:
buildscript {
dependencies {
classpath 'com.android.tools.build:bundletool:0.9.0'
}
}
App模块的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();
.....
}
任何帮助都会非常棒。
【问题讨论】:
-
您能否详细说明“仅当应用程序因侧载问题而重新下载时才会发生崩溃”是什么意思?您执行什么操作?
-
@Pierre 这意味着,当我安装侧面加载的应用程序时,播放核心库会识别该应用程序是侧面加载的并显示弹出窗口说“安装失败”并重定向到播放商店以安装缺少的拆分 apk .当我从 Play 商店安装缺少的拆分 apk 时,现在如果我运行 apk,它会因上述错误而崩溃。
-
应用需要卸载重新安装。
-
@Pierre 没错。这是应该的。但是当弹出窗口重定向到 Play 商店时,我们会看到两个选项“卸载”和“更新”。人们会选择“更新”。我们不能指望侧载应用程序的人会卸载并重新安装。这必须在某个地方强制执行或实施更好的方法。
-
我认为您可能会在您的情况下看到“更新”,因为实际上有更新版本的应用程序可用。不过,我们正在努力改进,是的。
标签: android crash android-app-bundle sideloading google-play-core