【问题标题】:How to test app update on Google Play?如何在 Google Play 上测试应用更新?
【发布时间】:2018-02-17 04:50:59
【问题描述】:

假设我在 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 应用程序。

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

提前致谢。

编辑:

如果我能与其他人一起测试我的应用程序,那就太好了。因此,解决方案所需的编程和命令提示符使用越少越好。

【问题讨论】:

    标签: android google-play android-testing


    【解决方案1】:

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

    没有任何真正的“升级”功能。这只是新版本的安装。

    对了,你可以在onUpgradeSQLiteOpenHelper中添加新闻栏。

    【讨论】:

      【解决方案2】:

      我使用Beta 为 iOS 和 Android 应用程序提供无痛的 beta 发行版。

      发件人:Overview

      您希望在整个开发生命周期中尽早获得反馈。使用 Beta,您可以轻松地将 Beta 版本发送给您的用户。您将自动获取所有构建的使用情况统计信息和稳定性指标,以便您知道何时准备好发布。

      我发现它非常有用,并结合使用 beta 和 crashlytics 进行崩溃报告。优点如下:

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

      【讨论】:

        【解决方案3】:

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

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

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

        修正错误并重复。


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

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

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

        祝测试愉快。


        如果您使用的是 VCS

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

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

        【讨论】:

          【解决方案4】:

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

          1. 安装和使用您的“旧”应用
          2. 通过adb pull /data/data/com.company.app $LOCALDIR保存数据
          3. 通过 IDE 或 adb 更新到您的新应用版本
          4. 测试您的迁移

          从现在开始无需重新安装旧应用。

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

          【讨论】:

            【解决方案5】:

            这很容易,您可以自己更改数据库版本来测试它。您甚至不需要更新清单文件中的版本代码。如果您使用的是 SQLite 数据库和 SQLiteOpenHelper 类,我的回答是有效的。

            首先,在 SQLiteOpenHelper 类中增加数据库版本。

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

            当您更新版本的构造函数时,将调用 SQliteHelper 类的 onUpgrade() 方法。您可以使用 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 的数据库更新,如有必要,您也应该考虑这一点。 更新逻辑对您来说是独一无二的。

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

            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);
                    }
                }
            }
            

            【讨论】:

              【解决方案6】:

              据我了解,主要问题与数据库无关,而是一般可能性“如何检查从版本 1 到版本 2 的更新是否适合最终用户?”

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

              前往

              Google Play 控制台 > 开发工具 > 内部应用共享 > 上传链接

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

              它完全符合我的预期。

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

              0.0.9 到 0.0.11

              0.0.10 到 0.0.11

              【讨论】:

                【解决方案7】:

                您必须使用之前提供的“工作模式”。

                您在 androidstudio 上编译的每个版本(在版本中编译的版本)并存放在 playstore 上,您必须将其保存在本地,您必须跟踪您之前所做的所有事情,并且这样做很好使用特殊工具。 我个人使用“颠覆”应用程序,但一个和另一个一样好。

                1) 在设备上手动安装(不使用 googleplay)旧 apk(版本不是调试版本)(从颠覆应用程序中获取)。

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

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

                我的应用中有一个“按钮”,仅在测试阶段可见,用于启动“恢复数据库”;

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

                这是我发现的唯一方法来测试我的更新,而不必疯狂地使用 betatester、googleplay、版本代码、上传、下载等……它有效!

                【讨论】:

                  猜你喜欢
                  • 2012-07-10
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2023-03-22
                  相关资源
                  最近更新 更多