Nav*_*T P 9 crash android sideloading android-app-bundle google-play-core
一些背景信息:ResourceNotFoundException当我们迁移到Android应用程序捆绑包发布方法时,我们大多数人都可能遇到过。显然,问题出在侧面加载应用程序。参考这里。
Google最近宣布了针对此问题的解决方案。使用播放核心库,我们可以确定该应用是否为侧面加载(标识丢失的拆分apk)。如果应用程序是侧面加载的,则会显示“ 安装失败 ”弹出窗口,并重定向到Play商店,用户可以在其中通过Google Play商店正确安装该应用程序。
问题:一切正常,直到从Play商店安装缺少的拆分APK。现在,当我重新启动该应用程序时,它立即崩溃并显示错误消息。
默认FirebaseApp未在此过程中初始化
注意:直接从Play商店下载应用程序可以正常运行,而不会导致崩溃。仅当由于侧面加载问题而重新下载应用程序时,才会发生崩溃。
代码:
项目的build.gradle:
buildscript {
dependencies {
classpath 'com.android.tools.build:bundletool:0.9.0'
}
}
Run Code Online (Sandbox Code Playgroud)
应用模块的build.gradle:
implementation 'com.google.android.play:core:1.6.1'
Run Code Online (Sandbox Code Playgroud)
扩展应用程序的类:
public void onCreate() {
if (MissingSplitsManagerFactory.create(this).disableAppIfMissingRequiredSplits()) {
// Skip app initialization.
return;
}
super.onCreate();
.....
}
Run Code Online (Sandbox Code Playgroud)
任何帮助都将非常棒。
我已经使用最新版本的 Play 核心库解决了这个问题:
应用程序模块的build.gradle:
implementation "com.google.android.play:core:1.7.2"
Run Code Online (Sandbox Code Playgroud)
其他实现保持不变。
扩展 Application 的类:
public void onCreate() {
if (MissingSplitsManagerFactory.create(this).disableAppIfMissingRequiredSplits()) {
// Skip app initialization.
return;
}
super.onCreate();
.....
}
Run Code Online (Sandbox Code Playgroud)
如何测试:
正确测试它的更好方法是在 Play 商店内部测试通道中发布包含上述修复的应用程序包(将您自己添加为测试人员)。
模拟安装无效的 apk - 使用bundletool 从.apks捆绑包中获取文件,将其解压并使用 adb 命令安装 base_master.apk
adb install base_master.apk。
启动应用程序,您应该看到“安装失败”对话框,它会重定向到 Play 商店,单击“更新”,Play 商店将安装缺少的 apk。
现在启动应用程序应该可以正常工作。
希望这可以帮助
| 归档时间: |
|
| 查看次数: |
567 次 |
| 最近记录: |