我们说我在Google Play商店中安装了1.0版的应用程序。
在新版本(1.1)中,我想用新列升级数据库。
数据库升级是我的应用程序中常见的崩溃,因为以前版本(1.0)中的用户在数据库中没有新列。
我曾尝试使用Google Play商店的测试版测试功能,但问题是没有有效的方法(或者至少我还没有找到),以便执行以下操作:
将当前稳定版本(1.0)安装到测试仪设备,然后将应用程序更新为(1.1) - 假设我们在新更新版本的游戏测试中遇到错误(1.1) ),我修复它(1.2),我想重复这个程序,我想将1.0稳定的应用程序安装到测试人员的设备上,然后我想再次将应用程序更新为1.2(已解决误差)
唯一的方法(就我而言)是从beta测试列表中删除beta测试人员(可能需要数小时才能在Google Play系统中刷新),重新下载1.0应用程序,将测试人员重新添加到beta测试列表,(再次等待数小时)并下载新的1.2应用程序。
是否有更复杂的方法来测试应用版本更新?
提前致谢。
编辑:
如果我可以与其他人测试我的应用程序,这将是很好的。因此,解决方案所需的编程和命令提示符使用越少越好。
答案 0 :(得分:7)
您不需要Play Store
来测试数据库升级
你可以使用模拟器。 Drag& Drop版本1.0(这将安装应用程序),打开应用程序,拖放版本1.1。
没有任何真正的“升级”功能。这只是新版本的安装。
顺便说一下,您可以在SQLiteOpenHelper
的{{3}}中添加新闻列。
答案 1 :(得分:2)
我将Beta用于iOS和Android应用程序的无痛beta版本。
来自:Overview
您希望在整个开发生命周期中尽早提供反馈。使用Beta,您可以轻松地向用户发送测试版。您将自动获取所有构建的使用情况统计信息和稳定性指标,以便了解何时准备发货。
我发现它非常有用,并且与crashlytics一起使用beta进行崩溃报告。以下是优点:
答案 2 :(得分:2)
我建议您备份数据,以便轻松测试和调整迁移代码。这仅适用于模拟器或有根设备!
adb pull /data/data/com.company.app $LOCALDIR
从现在开始无需再次安装旧应用程序。
重试迁移:
1. adb push $LOCALDIR /data/data/com.company.app
2.测试您的迁移
3.修复迁移代码并重复
答案 3 :(得分:1)
您真的不需要测试版渠道来测试应用更新。一旦完成测试并希望开始接收用户反馈,您只想使用测试版通道。
要测试应用更新,最基本的方法是...
修复错误并重复。
步骤1.
是为了确保您的用户可以获得PlayStore版本。卸载是确保清除应用程序数据的最佳方法。然后,您只需按照2.
中的任何用户安装应用程序。
您必须至少打开一次应用程序,否则它将无法运行。使用数据填充您的应用程序,以便您可以正确测试更新。 3.
步骤是设置测试数据。
在步骤4.
中请注意,您只需要一个与您的发布密钥库签名的应用,但它仍然可以是 debuggable 。您仍然可以附加调试器,并检查发生了什么,以防出现更严重的错误
如果您正确配置了build.gradle文件,则可以在选择发布版本变体后按Android Studio中的“播放”按钮。您可以在测试时将发布配置修改为可调试,也可以创建第三个已发布签名但可调试的buildType。
进行有趣的测试。
如果您正在使用VCS
如果您使用的是版本控制系统(VCS) - 我真的希望您这样做 - 您也可以构建&在使用最新快照进行更新之前安装以前的版本。同样的步骤适用,仅在步骤2.
中您自己构建并安装以前的版本
与使用应用程序的发布版本相比,在某些情况下这可能更容易,因为您不需要访问发布密钥库,您只需使用调试签名的应用程序,而无需更改build.gradle中的任何内容。
此方法要求您跟踪当前发布的版本,或者您可能会测试错误的更新。所以一定要标记你的版本!
答案 4 :(得分:0)
这非常简单,您可以通过自己更改数据库版本来测试它。您甚至不需要更新清单文件中的版本代码。如果您使用的是SQLite数据库和SQLiteOpenHelper
类,那么我的答案是有效的。
首先,在SQLiteOpenHelper类中增加数据库版本。
public DatabaseOpenHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
当您更新构造函数onUpgrade()的版本时,将调用SQliteHelper类的方法。您可以使用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);
}
}
}
答案 5 :(得分:0)
据我了解,主要问题与数据库无关,但一般而言,“如何检查最终用户从版本1到版本2的更新是否正常?”
我找到了内部应用共享的方法。 在这里您可以放置APK版本,为可以访问您的APK的测试用户设置电子邮件。
转到
Google Play控制台>开发工具>内部应用共享>上传链接
您可以拖放所需的APK,然后提供链接以供测试用户下载特定的APK。
它完全符合我的预期。
现在,我可以在Android设备上检查对我的用户而言,下一次更新将成功。
0.0.9至0.0.11
0.0.10至0.0.11
答案 6 :(得分:0)
您必须使用以前提供的“工作模式”。
您在androidstudio上编译的每个发行版(在发行版中进行编译的一个版本)和存放在Playstore上的都必须将其保存在本地,您必须跟踪以前所做的所有事情,并且这样做很对使用特殊工具。 我个人使用了“ subversion”应用程序,但是一个和另一个一样好。
1)在设备上手动安装(不使用googleplay)旧的apk(版本发行版,不是调试版本)(从Subversion应用程序中获取)。
2)获取(始终不使用googleplay手动进行)新版本(没有调试版本)并进行安装...更新将开始,您可以完全测试设备上会发生什么。
如果您只想测试数据库的更新部分(了解onUpgrade):
我在我的应用中有一个“按钮”,仅在测试阶段可见,该按钮会启动“还原数据库”;
安装apk NEW并启动任何先前版本的还原(通过按钮测试)(为此,您需要恢复应用程序先前版本的数据库.db文件),这样,OnUpgrade将开始因为您会注意到还原的数据库具有较低的版本。
这是我发现测试更新的唯一方法,而不必疯狂地使用betatester,googleplay,版本代码,上传,下载等,等等……有效!