使用Play核心库验证非Google Play应用的安装情况

时间:2019-06-23 15:38:53

标签: android crash android-app-bundle sideloading google-play-core

某些情况:当我们迁移到 Android应用捆绑包发布方法时,我们大多数人都可能遇到过ResourceNotFoundException。显然,问题出在侧面加载应用程序。 Reference here.

Google最近宣布了solution这个问题。使用播放核心库,我们可以确定该应用是否为侧面加载(标识丢失的拆分apk)。如果应用是侧面加载的,则会显示“ 安装失败”弹出窗口,并重定向到Play商店,用户可以在其中通过Google Play商店正确安装该应用。

问题:一切正常,直到从Play商店安装缺少的拆分APK。现在,当我重新启动该应用程序时,它立即崩溃并显示错误消息。

  

默认FirebaseApp未在此过程中初始化

注意:直接从Play商店下载应用程序可以正常运行,而不会崩溃。只有在由于侧面加载问题而重新下载应用程序时,才会发生崩溃。

代码:
项目的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();
    .....
 }

任何帮助都会很棒。

1 个答案:

答案 0 :(得分:2)

我已使用最新版本的Play核心库解决了此问题:

应用程序模块的build.gradle:

implementation "com.google.android.play:core:1.7.2"

其他实现保持不变。

扩展应用程序的类:

public void onCreate() {
 if (MissingSplitsManagerFactory.create(this).disableAppIfMissingRequiredSplits()) {
    // Skip app initialization.
    return;
 }
 super.onCreate();
 .....
}

如何测试:

  • 更好地测试它的一种更好方法是在Play商店内部测试频道(将您自己添加为测试人员)中发布具有上述修复功能的应用包。

  • 模拟安装无效的APK-使用bundletool从捆绑中获取.apks文件,将其解压缩并使用adb命令安装base_master.apk adb install base_master.apk

  • 启动该应用程序,您应该看到“安装失败”对话框,它会重定向到Play商店,单击“更新”,Play商店将安装缺少的apk。

  • 启动应用程序现在应该可以正常运行。

希望这会有所帮助