【问题标题】:Verify non-Google Play app installs using Play core library使用 Play 核心库验证非 Google Play 应用安装
【发布时间】: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


【解决方案1】:

我已经用最新版本的 Play 核心库解决了这个问题:

App 模块的 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 商店内部测试通道中发布包含上述修复的 app bundle(将自己添加为测试人员)。

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

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

  • 现在启动应用程序应该可以正常工作了。

希望对你有帮助

【讨论】:

  • 此方法现已弃用
猜你喜欢
  • 2019-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-13
  • 2014-12-31
  • 2018-08-08
  • 2020-12-24
  • 1970-01-01
相关资源
最近更新 更多