如何在 Google Play 上测试应用更新?

How to test app update on Google Play?

假设我在 Google Play 商店中安装了版本为 1.0 的应用程序。

在新版本(1.1)中,我想用新列升级数据库。

数据库升级是我应用程序中的常见崩溃,因为以前版本 (1.0) 的用户在数据库中没有新列。

我尝试使用 Google Play 商店的 beta 测试功能,但问题是没有有效的方法(或者至少我还没有找到)来执行以下操作:

在测试者的设备上安装当前稳定版本 (1.0),然后将应用程序更新至 (1.1) - 假设我们在新更新版本 (1.1) 的游戏测试期间遇到错误,我修复它 ( 1.2) 我想重复这个过程,我想将 1.0 稳定版应用程序安装到测试人员的设备上,然后我想再次将应用程序更新到 1.2(已解决错误)

唯一的方法(据我所知)是从 Beta 测试列表中删除 Beta 测试人员(在 Google Play 系统中可能需要数小时才能刷新),重新下载 1.0 应用程序,重新-将测试人员添加到 Beta 测试列表,(再次等待数小时)并下载新的 1.2 应用程序。

是否有更复杂的方法来测试应用程序版本更新?

提前致谢。

编辑:

如果我可以与其他人一起测试我的应用程序,那就太好了。所以需要的编程和命令提示符使用越少越好。

您不需要 Play Store 来测试数据库升级。
你可以只使用模拟器。拖放版本 1.0(这将安装应用程序),打开应用程序,然后拖放版本 1.1。

没有任何真正的 "upgrade" 功能。这只是新版本的安装。

顺便说一句,您可以在 SQLiteOpenHelperonUpgrade 中添加新闻栏目。

我使用 Beta 为 iOS 和 Android 应用程序进行无痛 Beta 分发。

发件人:Overview

You want feedback early and often throughout your development lifecycle. With Beta, you can easily send beta builds to your users. You’ll automatically get usage stats and stability metrics for all your builds, so you know when you’re ready to ship.

我发现它非常有用,将测试版与 crashlytics 一起用于崩溃报告。以下是优点:

  • 您可以使用 Android Automation for Continuous Delivery 自动构建,并通过 gradle 支持测试版。
  • 构建立即可供所有测试人员使用。
  • 所有构建都已存档,随时可用。
  • 动态添加 QA 工程师,跟踪进度,通过创建和共享构建动态添加 QA 工程师。
  • 访问所有包含构建(apk) 和构建版本的构建发行说明。
  • 此外,如果构建得到 QA 工程师的批准,可以直接从 gradle 本身使用 fastlane 将相同的 apk 上传到 playstore。

您确实不需要测试版渠道来测试应用程序更新。您只想在完成测试并开始接收用户反馈后使用 Beta 频道。

要测试应用程序更新,最基本的方法是...

  1. 卸载所有当前安装的应用程序
  2. 安装最新的 PlayStore 版本
  3. 打开应用程序,登录,做任何需要的事情来填充你的数据库和设置
  4. 安装新的、更新的应用程序版本。这必须使用您的 release 密钥库进行签名,否则更新将失败
  5. 测试应用更新

修正错误并重复。


1. 步是为了确保您获得与用户一样的 PlayStore 版本。卸载是确保清除应用程序数据的最佳方式。之后,您只需像 2..

中的任何用户一样安装该应用程序

您必须至少打开您的应用程序一次,否则它不会 运行。像用户一样用数据填充您的应用程序,以便您可以正确测试更新。 3. 步骤是设置测试数据。

在步骤 4. 中,请记住您只需要一个使用您的发布密钥库 签名 的应用程序,但它仍然可以 可调试。您仍然可以附加调试器并检查发生了什么,以防出现更严重的错误。
如果您正确配置了 build.gradle 文件,您只需在 Android Studio 中选择发布构建变体后按播放按钮即可。您可以将发布配置修改为在测试时可调试,或者创建第三个已发布签名但可调试的 buildType。

祝您测试愉快。


如果您使用的是 VCS

如果您使用版本控制系统 (VCS)——我真的希望您这样做——您也可以在使用最新快照更新之前构建并安装以前的版本。适用相同的步骤,只是在步骤 2. 中您自己构建并安装了以前的版本。
与使用您的应用程序的发布版本相比,这在某些情况下可能更容易,因为您不需要访问发布密钥库并且您可以只使用调试签名的应用程序而无需更改 build.gradle 中的任何内容。

此方法要求您跟踪当前发布的版本,否则您可能会测试错误的更新。所以一定要标记你的版本!

我建议备份您的数据,以便轻松测试和调整您的迁移代码。这仅适用于模拟器或有根设备!

  1. 安装并使用您的 "old" 应用程序
  2. 通过adb pull /data/data/com.company.app $LOCALDIR
  3. 保存数据
  4. 通过 IDE 或 adb
  5. 更新到您的新应用版本
  6. 测试迁移

以后无需再安装旧应用

重试迁移: 1. adb push $LOCALDIR /data/data/com.company.app 2. 测试你的迁移 3. 修正你的迁移代码并重复

这很简单,您可以自己更改数据库版本来测试它。您甚至不需要更新清单文件中的版本代码。如果您使用的是 SQLite 数据库并且 SQLiteOpenHelper class.

我的回答是有效的

首先,增加SQLiteOpenHelper里面的数据库版本class.

public DatabaseOpenHelper(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

当您更新构造函数的版本时,将调用 SQliteHelper 的 onUpgrade() 方法 class。您可以使用println或log方法进行测试。

    @Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    this.oldVersion = oldVersion;
    this.newVersion = newVersion;

    if(oldVersion == 1 && newVersion == 2) {
          // add columns
    } else if(oldVersion == 2 && newVersion == 3) {
         // Do another stuff
   }
}

您可以定义更新之间的逻辑。例如,用户的版本可能为 1,错过了版本 2 和 3,并安装了数据库版本 4 的更新,如有必要,您也应该考虑这一点。 更新逻辑对您来说是独一无二的。

例如,如果用户的旧版本低于某个版本,并且您希望在特定版本上创建新的数据库或 table,所有用户的版本均低于 6,您希望删除数据库或 table 在版本 6 上,您可以从 tables 获取所有值到列表或列表或任何数据结构,然后创建新数据库 and/or tables 然后移动新值从包含对象的列表中将新列的空属性添加到新的 tables。用户不会注意到任何事情,但在幕后您将能够毫无问题地更改数据库或 tables。当我希望添加行或重新创建数据库时,我经常使用它。

if (oldVersion == 2 && newVersion == 3) {

        previousMeasures = dbManager.getMeasureListAnglePhoto();
        db.execSQL("DROP DATABASE dbOld.db");
        db.execSQL("DROP TABLE IF EXISTS " + TableConstants.TABLE_ANGLE_PHOTO);

       onCreate(db);

      if (previousMeasures != null) {
        for (Measure measure : previousMeasures) {
            dbManager.addMeasureAnglePhoto(measure);
        }
    }
}

据我了解,主要问题与数据库无关,但一般可能性 "How to check that update from version 1 to version 2 will gone fine for end user?"

我找到了使用内部应用共享的方法。 在这里您可以放置​​您的 APK 版本,为可以访问您的 APK 的测试用户设置电子邮件。

转到

Google Play Console > Development Tools > Internal app sharing > Upload link

您可以拖放所需的 APK,然后提供 Link 供测试用户下载特定的 APK。

它完全符合我的预期。

现在我可以在 Android 设备上检查我的用户的下一次更新是否成功。

0.0.9 到 0.0.11

0.0.10 到 0.0.11

您必须使用之前提供的"work mode"。

你在 androidstudio 上编译的每个版本(在版本中编译的版本)和在 playstore 上的存款你必须将它保存在本地,你必须跟踪你之前所做的一切和要做的事情这最好使用特殊工具。 我个人使用 "subversion" 应用程序,但一个和另一个一样好。

1) 在设备上手动安装(不使用 googleplay)旧的 apk(verison 版本不是 DEBUG 版本)(从 subversion 应用程序中获取)。

2) 获取(始终手动不使用 googleplay)新版本(不是调试版本)并安装它...更新将开始,您可以准确测试设备上会发生什么。

如果你只对测试数据库的更新部分感兴趣(onUpgrade了解):

我在我的应用程序中有一个 "button",仅在测试阶段可见,它启动 "restore database";

安装 apk NEW 并启动任何以前版本的恢复(从按钮测试)(为此,您需要恢复以前版本的应用程序的数据库 .db 文件),这样 OnUpgrade将启动,因为您会注意到还原的数据库版本较低。

这是我发现的唯一一种无需疯狂使用 betatester、googleplay、versioncode、上传、下载等方式来测试我的更新的方法...它有效!